2017-10-09 67 views
-1
set.seed(3) 
mydata <- data.frame(id = c(1:5), 
      score = c(rnorm(5, 0, 1))) 
ids <- c(1, 2, 3, 3) 
> subset(mydata, id %in% ids) 
    id  score 
1 1 -0.9619334 
2 2 -0.2925257 
3 3 0.2587882 

我有一個情況我想子集mydata這樣的所有行,其idids匹配重複行。值得注意的是我的ids已經重複了兩次。但似乎subset只提取了獨特的行,我猜測由於運營商%in%。然而,我的期望輸出是R:如何子集的data.frame

> subset(mydata, id %in% ids) 
     id  score 
    1 1 -0.9619334 
    2 2 -0.2925257 
    3 3 0.2587882 
    4 3 0.2587882 

我也試過使用==運算符來代替。但是,這似乎沒有辦法。

+0

您的示例數據框不包含重複的行。如果你的'ids'與你的'mydata'有任何關係,你需要明確說明。他們沒有相同的長度,你按照什麼規則聯繫他們? –

+0

'mydata'沒有重複的行,這是正確的。我只想創建一個'data.frame',其中的行對應於我的'ids'。所以如果我的'ids'是'c(1,1,1,2,2,2)',那麼我想要的'data.frame'應該有mydata的第一行和第二行,每個重複3次。 – Adrian

+1

所以你的'ids'和mydata有相同的長度?如果是這樣,你能否請編輯你的問題,以反映 –

回答

1

而不是使用%in%,請嘗試使用它的姐妹函數match()

mydata[match(ids, mydata$id), ] 

這將返回重複的ID。