我有点卡在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
答案 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]