gpt4 book ai didi

r - 如何使用 dplyr 汇总与组不匹配的值

转载 作者:行者123 更新时间:2023-12-03 18:19:26 26 4
gpt4 key购买 nike

我想对属于行组以外的组的行的值求和。例如使用此示例数据

> df <- data.frame(id=1:5, group=c("A", "A", "B", "B", "A"), val=seq(9, 1, -2))
> df
id group val
1 1 A 9
2 2 A 7
3 3 B 5
4 4 B 3
5 5 A 1

总结 dplyr按组
> df %>% group_by(group) %>% summarize(sumval = sum(val))
Source: local data frame [2 x 2]

group sumval
(fctr) (dbl)
1 A 17
2 B 8

我想要的是属于组 A 的行的值使用 sumval不是 A 组,即最终结果是
  id group val notval
1 1 A 9 8
2 2 A 7 8
3 3 B 5 17
4 4 B 3 17
5 5 A 1 8

有没有办法在 dplyr 中做到这一点? ?最好在单链中?

最佳答案

我们可以通过 base R 做到这一点

 s1 <- sapply(unique(df$group), function(x) sum(df$val[df$group !=x]))
s1[with(df, match(group, unique(group)))]
#[1] 8 8 17 17 8

或使用 data.table
library(data.table)
setDT(df)[,notval := sum(df$val[df$group!=group]) ,group]

关于r - 如何使用 dplyr 汇总与组不匹配的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34327780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com