r - 匹配单独的数据框时计算行的平均值

标签 r dataframe mean

给定一个包含索引和数据列的数据框,如下所示:

AIndex <- c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)
AData  <- c(3,5,6,7,3,2,1,2,3,4,5,6,7,8,9)
DF <- data.frame(AIndex,AData)

然后给定第二个数据框,在索引中有一些重叠,如下所示:

BIndex <- c(1,4,8,11,13)
BData  <- c(3,5,7,6,5)
DF2 <- data.frame(BIndex,BData)

我的目标是能够在 A 数据框中找到 A 中的索引和 B 中的索引匹配的位置,然后计算 A + 2 行中该行的平均值。

例如,A 和 B 在 A 中第一次匹配是第 1 行。所以我想在 A (3) 中找到对应的数据点以及接下来的两个数据点(5 和 6)。所以平均值是 4.6

最终结果将是一个新的数据框,如下所示:

Index Data
1     4.6
4      4
8      3
11     6
13     8

最佳答案

有几种方法可以做到这一点。第一步通常涉及查找元素匹配的位置:

mats = match(DF2$BIndex, DF$AIndex)

要找到均值,只需将相关值相加即可

(AData[mats] + AData[mats+1] + AData[mats+2])/3

关于r - 匹配单独的数据框时计算行的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34351340/

相关文章:

r - grep OR 在数字序列之后

r - 从列表中提取输出并保存在数据框中

python - 对数正态分布的均值和标准差与分析值不匹配

python - 从 pyspark 数据帧向量列中查找最大值索引的错误

node.js - 在 Node 和 Nginx 中终止 SSL/TLS 的位置

python - 如何区分 Pandas 中除一列之外的两个数据框?

r - 在 R 中使用大于 24 小时的时间值

r - 使用 data.table 根据条件创建二进制列

Python:Pandas 数据框 - 数据被覆盖而不是连接

python - '>' not supported between instances of ' 海峡'和 'int'