r - 在 dplyr 中的 group_by 之后在汇总中使用 ifelse
问题描述
我想对包含多个分组级别的数据集进行分组。但是,我在某个日期之后开始对变量进行加权的数据集。
因此,我想对一个变量求和,但在特定日期之后。在该日期之前,我希望该变量的值保持不变。如下,
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 条件内的 summarise 语句之后包含 if 语句?!
谢谢
解决方案
您尚未共享您正在寻找的预期输出,但根据您的尝试,我认为您可以尝试 -
library(dplyr)
score %>%
distinct(id, interval,category, .keep_all = TRUE)%>%
group_by(id, interval) %>%
summarise(sumresult = if(all(interval > 1)) sum(result) else result, .groups = 'drop')
# id interval sumresult
# <dbl> <dbl> <dbl>
# 1 1 1 92
# 2 1 1 88
# 3 1 1 78
# 4 1 1 78
# 5 1 1 98
# 6 1 2 391
# 7 2 1 95
# 8 2 1 96
# 9 2 1 63
#10 2 1 96
#11 2 1 69
#12 2 2 427
如果interval > 1
然后我们给出 1 个值,否则保持sum
原样返回超过 1 个值。这就是为什么您在输出中有 1 行和多行的原因。result
result
interval = 2
interval = 1
推荐阅读
- firebase - 使用 Firebase 函数获取上传到 Firebase 存储的 pdf 的签名下载 URL
- d3.js - DC条形图如何使用鼠标划定x轴范围
- coldfusion - 哪个 EncodeFor 应该用于定位?
- html - How do you prevent the interference of MULTIPLE SVG elements (text labels) on mouseover of a different SVG element?
- sql-server - Can object creation in a database project (SqlPackager) be conditional?
- javascript - Vue 不是来自 .js
- python - Data getting repeated when fetched from the database while trying to display in bootstrap modals in Django
- excel - Download an Excel file from the latest email in Outlook inbox using Excel VBA
- java - 通过 MessageConverters 对 Instant 进行 Spring Boot 序列化
- excel - 为什么这个 IF/ELSE 不一致?