gpt4 book ai didi

r - 如何在 R/中执行复杂的多列匹配

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

我希望根据多于一列的条件匹配两个数据框,但不知道如何匹配。所以如果有我的数据集:

df1 <- data.frame(lower=c(0,5,10,15,20), upper=c(4,9,14,19,24), x=c(12,45,67,89,10))
df2 <- data.frame(age=c(12, 14, 5, 2, 9, 19, 22, 18, 23))

我希望匹配 df2 中的年龄在 df1 中的下限和上限之间的范围内,目的是向 df2 添加一个额外的列,其中包含 df1 中的 x 值,其中年龄介于上限和下限之间。即我希望 df2 看起来像
age    x
12 67
14 67
5 45
....etc.

我怎样才能实现这样的匹配?

最佳答案

我会选择一个简单的 sapplydf1$x 中的“anded”条件像这样选择:

df2$x <- sapply( df2$age, function(x) { df1$x[ x >= df1$lower & x <= df1$upper ] })

这使:
> df2
age x
1 12 67
2 14 67
3 5 45
4 2 12
5 9 45
6 19 89
7 22 10
8 18 89
9 23 10

例如,对于 12 岁,括号内的选项给出:
> 12 >= df1$lower & 12 <= df1$upper
[1] FALSE FALSE TRUE FALSE FALSE

所以得到 df1$x通过这个逻辑向量很容易,因为你的范围不重叠

关于r - 如何在 R/中执行复杂的多列匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32221224/

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