r - 在 R 中聚合具有条件的行
问题描述
我的例子
df <- data.frame(id1 = c("a" , "b", "c"),
id2 = c("a", "a", "d"),
n1 = c(2,2,0),
n2 = c(2,1,1),
n3 = c(0,1,1),
n4 = c(0,1,1))
首先,我已经像这样聚合了列中的所有行
df <- df %>%
group_by(id2) %>%
summarise(across(c(n1,n2,n3,n4), sum, na.rm = TRUE),
.groups = "drop")
现在,但现在我只想聚合a
column 中的前 2 行id2
。id1
自从我想要这样的输出以来,我们如何保持专栏。老实说,该列仅用于比较id2
并且非常多余,但我真的想保留它。
id1 id2 n1 n2 n3 n4
a a 4 3 1 1
c d 0 1 1 1
对此有什么建议吗?
解决方案
更改id2
其中包含的值'a'
。
library(dplyr)
df %>%
group_by(id1 = ifelse(id2 == 'a', id2, id1), id2) %>%
summarise(across(starts_with('n'), sum, na.rm = TRUE), .groups = "drop")
# id1 id2 n1 n2 n3 n4
# <chr> <chr> <dbl> <dbl> <dbl> <dbl>
#1 a a 4 3 1 1
#2 c d 0 1 1 1
推荐阅读
- nomad - 将可读的 JSON 作为字符串传递给 Nomad 模板
- c# - 有没有办法使用 C# 自动将日期时间附加到 js 和 css?
- python - Pandas DataFrame:根据不同行的值创建一列
- apollo - 如何使用 readQuery 和 writeQuery 从 Apollo GraphQL 客户端删除缓存记录
- python - Pandas 和 bs4 跳过抓取表中的超链接
- django - 在 django 表单中过滤关系模型
- python - 在 Python 中比较小于大于
- javascript - 无法通过 NodeJS spawnSync 传递正确数量的参数
- json - 解码 NSData Swift
- python - 尝试在 GaussianNB 上计算准确度时出错