dplyr出错,但在分组数据框架上没有使用ezANOVA进行plyr

时间:2015-12-06 20:59:05

标签: r dplyr plyr

我有一个现有的工作流程,我使用ez::ezANOVA将方差分析(ANOVA)应用于按因子分割的数据帧的每个部分。我想使用ddply中的plyr将我的旧版本更新为使用dplyr的新版本。这是一个适用于ddply的玩具示例:

require(dplyr)
require(plyr)
require(ez)

X = data.frame(
  x1 = rep(factor(letters[1:2]), 20),
  x2 = rep(factor(letters[1:2]), 10, each = 2),
  id = factor(sort(rep(1:10, 4)))
)

# stack individual data frames into one large data frame
df = X[rep(seq_len(nrow(X)), 10),]

# add an index column to track group
df$grp = sort(rep(1:10, nrow(X)))

# add an arbitrary outcome variable
df$y = runif(400)

# define a function that extracts p-values from ezANOVA output
PVals = function(df) {
  ezANOVA(
    data = df, dv = y, wid = id, 
    within = .(x1, x2))[[1]][5]
}

我用ddply得到了我想要的东西:

ddply(df, .(grp), PVals)

我想使用dplyr方法:

df %>% group_by(grp) %>% do(PVals(.))

但这会产生错误:

  

ezANOVA_main出错(data = data,dv = dv,wid = wid,within = within,:“dv”必须是数字。

所以我的假设是group_by返回的对象不包含与原始数据框相同的变量类?我该如何解决这个问题?

0 个答案:

没有答案