【问题标题】:R dplyr summarize_each --> "Error: cannot modify grouping variable"R dplyr summarise_each -->“错误:无法修改分组变量”
【发布时间】:2014-12-21 18:28:42
【问题描述】:

我正在尝试使用 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 ...
   ...

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

谢谢,

卢克

【问题讨论】:

  • 你试过没有"Activity"上的引号吗? dplyr 使用不同的函数来引用或不引用参数。

标签: r dplyr


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    看起来有两个问题:

    1. 分组变量名称用引号引起来(“活动”而不是 活动) - 谢谢,理查德!
    2. 由于未指定要汇总的列,dplyr 试图汇总每列的平均值,包括包含分组变量的前两列。

    我修复了代码,指定了除分组列之外的所有列,如下:

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

    【讨论】:

    • 你说前两列是分组变量,但你只按第二个(活动)列分组。如果你按分组所需的所有列分组,dplyr 将只使用其余的summerise_each 和 mutate_each 中的列。顺便说一句,如果您只需要排除一个列,例如在这种情况下,您也可以通过在 summarise_each 中使用 -Subject 来否定它。
    • 我实际上开始按两个变量(活动和主题)进行分组,但在进行故障排除时下降到一个。一旦我发现我需要排除分组变量,它就可以使用一两个。感谢您提供有关使用“-Subject”的提示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 2016-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多