gpt4 book ai didi

r - R 中是否有一种方法可以使用另一个值作为条件来对列中的所有项目求和?

转载 作者:行者123 更新时间:2023-12-02 02:09:18 25 4
gpt4 key购买 nike

我有两个数据框,其中包含具有特定条件的字符串名称和一个数字索引值。我想要的是使用索引值作为引用来计算条件下有多少个名称。

数据框很大,所以我只是举个例子。我想总结 aNAME 中的所有值,同时考虑 INDEX-MIN 之间的 CONDITION来自 b 的 INDEX-MAX。这里重要的是要指定并非“a”中的所有名称都将在最终结果中被捕获或汇总。结果应该如c

所示
a <- data.frame(c(1,1,2,3,3,3),c("A","B","C","D","E","F"),c(100,500,233,74,2750,10043))
colnames(a) <- c("CONDITION","NAME","INDEX")
b <- data.frame(c(1,2,3,3),c(1,75,2700,9872),c(600,245,3500,10500))
colnames(b) <- c("CONDITION","INDEX-MIN","INDEX-MAX")
c <- data.frame(c(1,2,3,3),c(1,75,2700,9872),c(600,245,3500,10500),c(2,1,1,1),c("A, B","C", "E", "F"))
colnames(c) <- c("CONDITION","INDEX-MIN","INDEX-MAX","NAME-COUNT","NAME")

最佳答案

我们可以在 data.table 中使用非相等连接来做到这一点

library(data.table)
setDT(a)[b, .(NAME_COUNT = .N, NAME = toString(NAME)),
on = .(CONDITION, INDEX >=`INDEX-MIN`, INDEX < `INDEX-MAX`), by = .EACHI]

-输出

    CONDITION INDEX INDEX NAME_COUNT NAME
1: 1 1 600 2 A, B
2: 2 75 245 1 C
3: 3 2700 3500 1 E
4: 3 9872 10500 1 F

关于r - R 中是否有一种方法可以使用另一个值作为条件来对列中的所有项目求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67929274/

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