R dplyr summarize_each - > "错误:无法修改分组变量"

时间:2014-12-21 18:28:43

标签: r dplyr

我尝试使用dplyr对数据帧进行分组和汇总,但不断收到以下错误:

  

错误:无法修改分组变量

以下是生成它的代码:

data_summary <- labeled_dataset %>%
    group_by("Activity") %>%
    summarise_each(funs(mean))

以下是我将此应用于以下数据框架的结构:

> str(labeled_dataset)
'data.frame':   10299 obs. of  88 variables:
 $ Subject                          : int  1 1 1 1 1 1 1 1 1 1 ...
 $ Activity                         : Factor w/ 6 levels "LAYING","SITTING",..: 3 3 3 3 3 3 3 3 3 3 ...
 $ tBodyAccmeanX                    : num  0.289 0.278 0.28 0.279 0.277 ...
 $ tBodyAccmeanY                    : num  -0.0203 -0.0164 -0.0195 -0.0262 -0.0166 ...
 $ tBodyAccmeanZ                    : num  -0.133 -0.124 -0.113 -0.123 -0.115 ...
 $ tGravityAccmeanX                 : num  0.963 0.967 0.967 0.968 0.968 ...
 $ tGravityAccmeanY                 : num  -0.141 -0.142 -0.142 -0.144 -0.149 ...
 $ tGravityAccmeanZ                 : num  0.1154 0.1094 0.1019 0.0999 0.0945 ...
   ...

我发现此错误的唯一参考是另一篇建议首先取消分组以确保数据尚未分组的帖子。我没有成功地尝试过。

谢谢,

2 个答案:

答案 0 :(得分:6)

不要将分组变量的名称放在引号中:

data_summary <- labeled_dataset %>%
  group_by(Activity) %>%
  summarise_each(funs(mean))

答案 1 :(得分:1)

看起来有两个问题:

  1. 将变量名称分组在引号中(“Activity”而不是 活动) - 谢谢,理查德!
  2. 通过不指定要汇总的列,dplyr尝试汇总每列的均值,包括包含分组变量的前两列。
  3. 我修复了代码,指定了除分组之外的所有列,如下所示:

    data_summary <- labeled_dataset %>%
        group_by(Activity) %>%
        summarise_each(funs(mean), tBodyAccmeanX:tGravityAccmeanX)