如何提取比较两个不同数据帧的两列的列?

时间:2019-04-12 13:54:44

标签: r dataframe match

我有点卡在R

我有两个数据框。

我想比较来自不同数据帧的两列,并根据比较的两列的匹配位置提取另一列的值。

示例数据:

test=data.frame(a=seq(1,10,by=1))

test2=data.frame(x=c(1.1,1.3,2.5,4.2,1.2,3.6,3.7,8.8,9.9,4.1),y=seq(1,10,by=1))

假设我有这些数据。我想要test2中x的值,其中test $ a和test2 $ y匹配

extract_test=test2[test2$y %in% test$a,]

将为我提供test2 $ y和test $ a中匹配值的所有数据框。但是我只想要test2 $ x作为test2 $ y == test $ a

2 个答案:

答案 0 :(得分:1)

使用which()

您可以尝试在TRUE中找出逻辑测试结果的哪些行:

mean_test <- newdf[which(olddf$range_mean %in% test$a), 1:2]

这应该返回测试为TRUE的那些行的行号,随后将相应地对数据帧进行子集化。

答案 1 :(得分:1)

extract_test=test2[test2$y %in% test$a,1]
[1] 1.1 1.3 2.5 4.2 1.2 3.6 3.7 8.8 9.9 4.1

这是您要找的吗?只需选择要提取的列作为子集的第二个元素。

或使用原始数据:

mean_test=df_half_data_mean_with_NA[df_half_data_mean_with_NA$range_mean %in% test$a,1]