R在数据框组上应用函数

标签 r split-apply-combine

我需要对每个主题单独运行方差分析。 我有一个数据框由来自 37 个主题的数据组成,我不想循环 37 次以对每个主题分别运行 37 次方差分析。 这些是我数据的前 4 行:

        latency subject     trialcode
   1    1385    14233664    neighbour
   2    2493    14233664    neighbour
   3    1429    14233664    neighbour
   4    1884    14233664    neighbour

这是我的代码:

 tmp <- with(as.data.frame(data),
        by(data$subject,
           function(x) aov(latency ~ trialcode + Error(trialcode), data=data)))
 sapply(tmp, coef)

但是我收到一条错误消息:

Error in unique.default(x, nmax = nmax) : 

unique() 只适用于向量

感谢任何帮助 谢谢

最佳答案

我认为 by 调用不正确。如果我使用 data(npk)

do.call(rbind,by(npk[,-1], npk$block,
      FUN=function(x) coef(aov(yield~N+P+K, data=x))))

对于你的数据,它可能是

do.call(rbind, by(data[,-2], data$subject, 
     FUN=function(x) coef(aov(latency ~ trialcode+ Error(trialcode), x))))

或者使用data.table

library(data.table)
setkey(setDT(data), subject)[, as.list(coef(aov(latency~trialcode+
           Error(trialcode))),by=subject]

关于R在数据框组上应用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27480925/

相关文章:

rbindlist data.tables 具有不同列数

R:没有for循环的子集和排序大数据帧

python - Pandas 多索引数据框将列中的第一行设置为 0

python - 使用列值(字符串数据类型)过滤 pandas group

r - 在R中按组应用滚动均值

r - 如何在 Shiny 的一个下载按钮中下载多个 png 图

r - 如何使用 geom_vline 和 geom_histogram r ggplot2 从填充比例图例中删除线

python - 如何在 R 或 MATLAB 中打开 3D .npy 文件?

MATLAB:在 SPLITAPPLY 内部使用时从 ISMEMBER 返回两个参数