我的数据框如下所示:
Stage Var1 var2 Var1 var2
A 1 11 9 12
A 2 NA 3 13
A NA NA 2 10
B 4 14 1 4
B NA NA 4 2
B 6 16 6 8
B 7 17 100 9
C 8 NA 4 6
C 9 19 34 12
C 10 NA 5 18
C 1 0 6 3
我想使用ddply拆分数据框,为每个组应用mean()。之后它必须为所有列循环。因此,我正在尝试这样的事情:
for(i in names(NewInput)){
NewInput[[i]] <- ddply(NewInput , "Model_Stage", function(x) {
mean.Cycle2 <- mean(x$NewInput[[i]])
})
}
上面的代码在没有for循环的情况下工作正常(即)ddply可以正常使用一个变量。但是,当我使用for循环运行列时,我收到了几个警告
In loop_apply(n, do.ply):argument is not numeric or logical: returning NA
问题:
- &GT;如何使用for循环遍历所有变量的ddply?
- &GT;是否可以使用apply()?
谢谢。
-Chris
答案 0 :(得分:1)
你可以尝试
library(plyr)
ddply(df1, .(Stage), colwise(mean, na.rm=TRUE))
其他选项包括
library(dplyr)
df1 %>%
group_by(Stage) %>%
summarise_each(funs(mean=mean(., na.rm=TRUE)))
或者
library(data.table)
setDT(df1)[, lapply(.SD, mean, na.rm=TRUE), Stage]
或使用基础R
aggregate(.~Stage, df1, FUN=mean, na.rm=TRUE, na.action=NULL)