r - 使用 group_by 和 summarize 时出现重复行

标签 r data.table dplyr

我有一个数据表,当使用汇总函数与 group_by 结合使用时,我得到了重复的行。

我将给出我的问题的简化示例。 首先,我使用 group_by 和 mutate 来添加每个 id 的“值”总和。

dt <- data.table(id = rep(1:5, each=10), cpc = rep((0.1*seq(5)), each=2), value = 1:50)

dt2 <- dt %>%
  group_by(id) %>%
  mutate(SumValue = sum(value))


Source: local data table [50 x 4]

   id cpc value SumValue
1   1 0.1     1       55
2   1 0.1     2       55
3   1 0.2     3       55
4   1 0.2     4       55
5   1 0.3     5       55
6   1 0.3     6       55
7   1 0.4     7       55
8   1 0.4     8       55
9   1 0.5     9       55
10  1 0.5    10       55
.. .. ...   ...      ...

到目前为止,没有任何问题。 但之后,当我对每个 id、cpc 组合执行 group_by 并使用 summarise 时,输出并不符合我的预期。 数字是正确的,但存在重复的行。

dt2 %>%
  group_by(id, cpc) %>%
  summarise(count = n(), SumValue = SumValue)

Source: local data table [50 x 4]
Groups: id

   id cpc count SumValue
1   1 0.1     2       55
2   1 0.1     2       55
3   1 0.2     2       55
4   1 0.2     2       55
5   1 0.3     2       55
6   1 0.3     2       55
7   1 0.4     2       55
8   1 0.4     2       55
9   1 0.5     2       55
10  1 0.5     2       55
.. .. ...   ...      ...

使用 unique() 可以得到所需的结果,但我认为这是没有必要的。

dt2 %>%
  group_by(id, cpc) %>%
  summarise(count = n(), SumValue = SumValue) %>%
  unique()

Source: local data table [25 x 4]
Groups: id

   id cpc count SumValue
1   1 0.1     2       55
2   1 0.2     2       55
3   1 0.3     2       55
4   1 0.4     2       55
5   1 0.5     2       55
6   2 0.1     2      155
7   2 0.2     2      155
8   2 0.3     2      155
9   2 0.4     2      155
10  2 0.5     2      155
.. .. ...   ...      ...

我认为group_by在add=FALSE时设置了group,所以我不知道为什么会出现重复的行。

最佳答案

我不确定确切的问题,但是当您将向量分配给汇总变量时,通常需要选择向量的一个元素。因此,在这种情况下,您需要选择将“SumValue”的哪个值分配给汇总的“SumValue”。我通常只使用变量 [1] 执行此操作,但第一个(变量)可能会更好。这能给您想要的结果吗?

dt <- data_frame(id = rep(1:5, each=10), 
                 cpc = rep((0.1*seq(5)), each=10), 
                 value = 1:50)
dt2 <- dt %>%
  group_by(id) %>%
  mutate(SumValue = sum(value))
dt2

dt2 %>%
  group_by(id, cpc) %>%
  summarise(count = n(), SumValue = first(SumValue))

关于r - 使用 group_by 和 summarize 时出现重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30262827/

相关文章:

r - 选择在 data.table 中具有特定值的列

r - 在 data.table 中对多个变量使用超前/滞后

r - 与 dplyr : turn one row into many 中的 'summarise' 相反

r - dplyr:按组减去与给定条件匹配的值

r - dplyr 中的列函数在 group_by 后发生变异,但没有给出正确的分组结果

xml - 使用并行化通过 R 抓取网页

R 将变量传递到自定义函数 purrr

在 R 中跨列运行聚合

R 在 R 中展平不同长度的嵌套列表(Google 地理编码 API 输出)

r - 使用条件子集 data.table