总和不是按组计算的(总是给出绝对总数)

Sum is not computed over groups (always gives the absolute total)

我正在创建一些摘要 table,但我很难处理简单的求和...

虽然记录数是正确的,但具有总和的变量始终为所有组计算相同的值。

这是代码:

SummarybyCallContext <- PSTNRecords %>% 
                            group_by (PSTNRecords$destinationContext) %>% 
                                summarize(
                                  Calls = n(), 
                                  Minutes = sum(PSTNRecords$durationMinutes),
                                  Charges = sum(PSTNRecords$charge), 
                                  Fees = sum(PSTNRecords$connectionCharge)
                                )
                                  
SummarybyCallContext

这是结果:

每个组的分钟数和费用应该不同(费用始终为零,但无论如何我都需要在 table 中显示)。

将 na.rm 设置为 TRUE 或 FALSE 似乎不会改变结果。

我做错了什么?

提前致谢!

~外星人

(Almost) Never 在 dplyr 动词函数中使用 PSTNRecords$PSTNRecords 开始的管道。为什么? 使用 $ 索引,在任何分组或过滤或 adding/changing 列之前,每个引用都是对 原始 数据的引用或重新排列完成。 没有 $-引用,它使用列,因为它们出现在管道.

的那一点
SummarybyCallContext <- PSTNRecords %>% 
                            group_by (destinationContext) %>% 
                                summarize(
                                  Calls = n(), 
                                  Minutes = sum(durationMinutes),
                                  Charges = sum(charge), 
                                  Fees = sum(connectionCharge)
                                )

这也有例外,但它们很少见,而且对于绝大多数 dplyr 新用户来说,通常通过其他机制做得更好。

示范:

dat <- data.frame(x=1:5)
dat %>%
  filter(dat$x > 2) %>%      # this still works okay, since `dat` and "data now" are same
  summarize(x2 = dat$x[1])   # however, `dat` has 5 rows but data in pipe only has 3 rows
#   x2
# 1  1
dat %>%
  filter(x > 2) %>%
  summarize(x2 = x[1])
#   x2
# 1  3