在R中查找值

时间:2010-11-09 15:00:28

标签: r list dataset lookup

我在R中有以下数据集:

> closed
 [1] 57637 31508 54113  2348  4747 68284 61779 36654 31399 54126 11232 60659 42968 56388  5114 66289 69491 45668   879 65649 71172 36120 61802  7699 70982
[26] 65720

> length(closed)
[1] 26

> stlist[1:5,]
          M.Type      M.Code                 M.Name    B.Code               B.Name          B.Region
1             5M        1759            Istanbul 5M    110007               Taksim               Ist
2             5M       62461              Edirne 5M    110007            Aysekadin               Ist
3             5M       69493            Tekirdag 5M    110431             Tekirdag               Ist
4             5M        7516              Ankara 5M    110548             Batikent               Ank
5             5M       14148               Bursa 5M    110351                Bursa               Ist

> nrow(stlist)
[1] 1830

我想在“stlist $ M.Code”中查找“closed”的所有值,并创建一个新的数据框,其中只包含26个“M.Code”的行,其中包含“stlist”的所有6列。我怎么能这样做?

2 个答案:

答案 0 :(得分:4)

在%中使用%:

stlist <- data.frame(
    M.Code = letters[1:10],
    b = rnorm(10)
)
closed <- c("a","d","f")

stlist[stlist$M.Code %in% closed,]

答案 1 :(得分:3)

Joris回答的另一种方法是使用subset()

subset(stlist, subset = M.Code %in% closed)

我知道两者之间唯一的主要区别是<{1}}假设条件中引用的变量是数据框的一部分,如果存在具有该名称的变量在数据框中。在这个例子中这没什么大不了的(只有一个额外的'stlist $'),但是如果你有复杂的标准,它会节省一些打字。

也许其他人知道更微妙的差异。