总和不是按组计算的(总是给出绝对总数)
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
我正在创建一些摘要 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