R匹配2个以上条件并返回响应值

标签 r match

嗨,我有两个数据集,其中第一个是一组索引:

ind1<-rep(c("E","W"), times=20)
ind2<-sample(100:150, 40)
y<-c(1:40)
index<-data.frame(cbind(ind1, ind2, y))

第二个数据集是需要索引的数据集。
x1<-sample(c("E","W","N"), 40, replace=TRUE)
x2<-sample(100:150, 40)
x3<-rep(0, times=40)
data<-data.frame(cbind(x1,x2,x3))

我想在x3中注明哪里x1x2data配用ind1ind2index分别返回对应的y .
index1<-split(index, index$ind1)
data1<-split(data, data$x1)
data1$E$x3<-match(data1$E$x2, index1$E$ind2)
data1$W$x3<-match(data1$W$x2, index1$W$ind2)

它有点符合我想要的方式但没有返回 y正确。我做错了哪一部分?
谢谢。

另外,是否有更快/更智能的方法?因为我可能有更多的条件可以匹配。最初我尝试过 if else 语句但没有用。

最佳答案

merge(data, index, by.x=c("ind1", "ind2"), by.y=c("x1", "x2"), all.x=TRUE, all.y=FALSE)

会给你xy ind1 的每个匹配组合的值和 ind2 , 和 x1x2 . x1的所有组合和 x2将被保留(即使 ind1ind2 的组合不会出现在 index 中,但 ind1ind2 的组合不会出现在 data 中也将被删除。 ,解决方案将保留 x3y 值,但如果您想删除 y 值,您可以根据@Ferdinand.kraft 的建议使用 merge(data[ ,-3], ...

关于R匹配2个以上条件并返回响应值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18319985/

相关文章:

scala - 为什么 Scala 中的模式匹配不适用于变量?

r - 在匹配后替换字符串的一部分

r - 为另一个类中包含的类编写方法

r - 如何加快 tidyr up 中的函数速度

python - 将 pandas 数据帧导出到 csv 时如何保持前导 0?

search - ElasticSearch问题与匹配结果

php - 字符串后如果没有空格,正则表达式 OR 语句将无法工作

javascript - 在 JavaScript 中用正则表达式替换字符串

r - 将 directlabels 稍微向左移动

c - C 中的 R 包依赖于另一个 R 包