【发布时间】:2021-12-15 01:46:14
【问题描述】:
我想对包含多个分组级别的数据集进行分组。但是,我在某个日期之后开始对变量进行加权的数据集。
因此,我想在一个特定日期之后对一个变量求和。在该日期之前,我希望该变量的值保持不变。如下,
score <- data.frame(
id = c(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2),
interval = c(1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,
1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2),
category = c(1,1,2,2,3,3,4,4,5,5,1,1,2,2,3,3,4,4,5,5,
1,1,2,2,3,3,4,4,5,5,1,1,2,2,3,3,4,4,5,5),
subcategory = c(1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2),
result = c(92,92,88,88,78,78,78,78,98,98,82,82,84,84,75,
75,86,86, 64,64,95,95,96,96,63,63,96,96,69,69,78,78,
88,88, 96,96,69,69,96,96))
由于每个分组级别可以有多个输入,因此每个组只需要一个值。因此,我只选择了一个值然后分组。
这是我的尝试:
S1 <- score %>%
distinct(id, interval,category, .keep_all = TRUE)%>%
group_by(id, interval) %>%
do(if(.$interval > 1)){summarize(sumresult = sum(result), .groups = 'drop')} else{.$interval})
我不断收到以下消息:
Error in summarize(sumresult = sum(result), .groups = "drop") :
object 'result' not found
In addition: There were 36 warnings (use warnings() to see them)
我也试过ifelse,但它也不起作用
如何在 group_by 之后包含 if 语句以及 if 条件中的 summarise 语句?!
谢谢
【问题讨论】:
-
请添加您的预期输出。