匹配数据框中的数值

hkj*_*447 2 r dataframe

a <- c(4000,3500,3000)
b <- c(0.43,0.55,0.61)

test.data <- data.frame(a,b)
Run Code Online (Sandbox Code Playgroud)

假设我想通过引用3500而不是通过行/列来获取值0.55。我将如何实现?我想我可以转换a为字符串,然后以这种方式引用它,但是有没有一种方法可以引用数字值来提取其中的值b

编辑:谢谢大家的好评!

Son*_*nny 5

如果我对它的理解很好,您可以通过以下方式获得它:

test.data$b[test.data$a == 3500]
[1] 0.55
Run Code Online (Sandbox Code Playgroud)

dplyr在您开始R旅程时,我也想向您介绍:

library(dplyr)
test.data %>%
  filter(a == 3500) %>%
  pull(b)
[1] 0.55
Run Code Online (Sandbox Code Playgroud)


Rus*_*tel 5

使用data.table-

> setDT(test.data)[a==3500,b]
[1] 0.55
Run Code Online (Sandbox Code Playgroud)

要么

> setDT(test.data)[a==3500]$b
[1] 0.55
Run Code Online (Sandbox Code Playgroud)

注意 -首先,选项是首选,因为注释中提到了@Frank。

  • 首选第一个习惯用法,因为它不会为所有列创建数据的子集,而只是为需要的那个。此外,它还会检查列名是否完全匹配。 (2认同)