gpt4 book ai didi

r - 通过在 R 中聚合复杂的配对名称求和

转载 作者:行者123 更新时间:2023-12-01 23:28:12 25 4
gpt4 key购买 nike

在 R 中,我试图根据唯一 ID 聚合数据框,但我需要为 ID 使用某种通配符值。意思是我有这样的配对名称:

lion_tiger
elephant_lion
tiger_lion

而且我需要将 lion_tiger 和 tiger_lion ID 加在一起,因为对中的顺序无关紧要。

以这个数据框为例:

df <- data.frame(pair = c("1_3","2_4","2_2","1_2","2_1","4_2","3_1","4_3","3_2"), 
value = c("12","10","19","2","34","29","13","3","14"))

因此,需要在新表中对 ID 对“1_2”和“2_1”的值求和。该新行将显示为:

1_2 36

有什么建议吗?虽然我的示例将数字作为对 ID,但实际上我需要它来读取文本(如上面的 lion_tiger"示例)。

最佳答案

我们可以用_拆分'pair'列,然后排序粘贴回来,按函数分组使用获取总和

tapply(as.numeric(as.character(df$value)), 
sapply(strsplit(as.character(df$pair), '_'), function(x)
paste(sort(as.numeric(x)), collapse="_")), FUN = sum)

或者另一个选项是 gsubfn

library(gsubfn)
df$pair <- gsubfn('([0-9]+)_([0-9]+)', ~paste(sort(as.numeric(c(x, y))), collapse='_'),
as.character(df$pair))
df$value <- as.numeric(as.character(df$value))
aggregate(value~pair, df, sum)

关于r - 通过在 R 中聚合复杂的配对名称求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47379667/

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