【问题标题】:R apply function on groups of data frameR在数据帧组上应用函数
【发布时间】:2015-02-13 08:45:25
【问题描述】:

我需要对每个主题单独运行 ANOVA。 我有一个数据框由来自 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() 仅适用于向量

任何帮助表示赞赏 谢谢

【问题讨论】:

标签: r split-apply-combine


【解决方案1】:

我认为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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 2020-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多