这就是我想要做的。我的数据框有一个因子变量“国家”,我想根据国家来分割数据框。然后,我想对每个国家/地区数据框的每个变量取均值。
此处的数据:https://github.com/pourque/country-data
到目前为止,我已经做到了...
myList <- split(df1, df1$country)
for(i in 1:length(myList)) {
aggregate <- mapply(myList[[i]][,-c(38:39)], colMeans)
}
(我不包括第38和39列,因为这些是因素。)
我已经读过这个(function over more than one list),这使我认为mapply是这里的答案...但是我遇到了这个错误:
Error in match.fun(FUN) :
'myList[[i]][, -c(38:39)]' is not a function, character or symbol
也许我格式化不正确?
最佳答案
数据表答案:
library(data.table)
setDT(df1)[, lapply(.SD, mean), by = country, .SDcols = -c('age', 'gender')]
现在,由于用户Arun,在.SDcols中取消选择的语法更加整洁
要解释这里发生了什么:
setDT(df1)
使data.frame成为data.table lapply(.SD, mean)
,取mean
by = county
通过根据country
分组的组来执行此操作.SDcols = -c('age', 'gender')
从数据age
和gender
列关于r - 在R中的数据帧列表上取列均值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30035592/