我在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列。我怎么能这样做?
答案 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 $'),但是如果你有复杂的标准,它会节省一些打字。
也许其他人知道更微妙的差异。