在R中查找值

在R中查找值,r,list,dataset,lookup,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.T

我在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”的行和所有6列“stlist”。我如何才能做到这一点?

在%中使用%

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

stlist[stlist$M.Code %in% closed,]
stlist在%中使用%

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

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

stlist替代Joris的答案是使用
subset()

据我所知,两者之间唯一的主要区别是
subset()
假设条件中引用的变量是数据帧的一部分,前提是数据帧中存在同名变量。在本例中,这没什么大不了的(只是一个额外的“stlist$”),但是如果您有复杂的条件,它可以节省一些输入


也许其他人知道一个更微妙的区别。

乔里斯答案的另一个选择是使用
subset()

据我所知,两者之间唯一的主要区别是
subset()
假设条件中引用的变量是数据帧的一部分,前提是数据帧中存在同名变量。在本例中,这没什么大不了的(只是一个额外的“stlist$”),但是如果您有复杂的条件,它可以节省一些输入


也许其他人知道一个更微妙的区别。

使用
子集
会稍微慢一些,因为额外的开销。正如Joshua所说。我主要使用性能指标,但我必须承认,子集是一种更易于阅读、更不容易出错的解决方案。由于额外的开销,使用
subset
会稍微慢一些。正如Joshua所说。我主要使用性能指标,但我必须承认子集是一个更易于阅读、更不容易出错的解决方案。