我有一個包含大約200列的數(shù)據(jù)框,其中我想要將表格分組前10個左右,這些是因子并將其余列相加。我有我要分組的所有列名列表以及我想要聚合的所有列的列表。我正在尋找的輸出格式需要是相同數(shù)量的cols的相同數(shù)據(jù)幀,只是組合在一起。有沒有使用包解決方案data.table,plyr或任何其他?
3 回答

萬千封印
TA貢獻(xiàn)1891條經(jīng)驗 獲得超3個贊
該data.table的方法是:
DT[, lapply(.SD,sum), by=list(col1,col2,col3,...)]
要么
DT[, lapply(.SD,sum), by=colnames(DT)[1:10]]
其中.SD是(D)ata的(S)ubset,不包括組列。(旁白:如果你需要一般性地引用組列,它們就在.BY。)

元芳怎么了
TA貢獻(xiàn)1798條經(jīng)驗 獲得超7個贊
在基地R這將是......
aggregate( as.matrix(df[,11:200]), as.list(df[,1:10]), FUN = sum)
編輯:自從我寫這篇文章以來,聚合函數(shù)已經(jīng)走了很長的路。以上鑄件都不是必需的。
aggregate( df[,11:200], df[,1:10], FUN = sum )
有很多方法可以寫這個。假設(shè)前10個列a1通過a10I 命名,如下所示,即使它很詳細(xì)。
aggregate(. ~ a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10, data = dat, FUN = sum)
(您可以使用粘貼來構(gòu)建公式并使用formula)
- 3 回答
- 0 關(guān)注
- 768 瀏覽
添加回答
舉報
0/150
提交
取消