【问题标题】:matching two data frame columns to a vector of length two to grab a value in the matching row in r将两个数据框列与长度为 2 的向量匹配,以获取 r 中匹配行中的值
【发布时间】:2018-05-06 00:33:55
【问题描述】:

这是我关于stackoverflow的第一个问题, 就这样。

我有一个看起来像的数据框-

data.frame1<- data.frame("ID" = c(1,2,3,4,5), "Col1" = c(1,4,12,15,6), "Col2"= c(3,6,2,4,1))

那么我有两个值

Value1 <- 4
Value2 <- 6

我想检查 (col1,col2) 中的每一对 (value1,value2) 是否有匹配项。

如果有匹配,我想返回 ID 号,所以在示例中 - 它会返回 2,如果没有匹配,我希望它返回 NA。

提前致谢!

【问题讨论】:

  • df[df$Col1 == Value1 &amp; df$Col2 == Value2,"ID"] , df 是你的数据框名
  • 请包含示例输出。
  • 您只需要正确指定条件即可。 data.frame1$Col1==Value1 &amp; data.frame1$Col2==Value2 会给你一个布尔向量。 which(data.frame1$Col1==Value1 &amp; data.frame1$Col2==Value2) 将为您提供向量为TRUE的索引

标签: r


【解决方案1】:

你可以使用which:

with(data.frame1, ifelse(idx <- Col1 == Value1 & Col2 == Value2, which(idx), NA))
# [1] NA  2 NA NA NA

或者如果您只想返回匹配的索引:

with(data.frame1, which(Col1 == Value1 & Col2 == Value2))
# [1] 2

【讨论】:

  • 谢谢!这正是我正在寻找的方法类型。
  • 不客气@AustinGoodrich。如果这回答了您的问题,请考虑通过在答案旁边设置复选标记来关闭问题。
猜你喜欢
  • 1970-01-01
  • 2017-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-08
  • 1970-01-01
相关资源
最近更新 更多