2016-05-16 16 views
1

我有一個數據幀,看起來像這樣:展開當前值的使用矢量data.frame在一列中的R

df <- data.frame(entrez = c(1:10, 1), entrez_HS = c(11:19, 19, 20)) 

    entrez entrez_HS 
1  1  11 
2  2  12 
3  3  13 
4  4  14 
5  5  15 
6  6  16 
7  7  17 
8  8  18 
9  9  19 
10  10  19 
11  1  20 

我還具有的值的矢量中存在的df$entrez_HS

entrez_HS <- c(11, 11, 12, 19, 19) 

對於entrez_HS中的每個值,我想要df的行,其中df$entrez_HS等於該值。 entrez_HS中的重複條目應該導致重複的行。下面是結果,我會期待上述df

entrez entrez_HS 
1  1  11 
2  1  11 
3  2  12 
4  9  19 
5  10  19 
6  9  19 
7  10  19 

不知道如何處理呢?謝謝

回答

4

merge數據一起:

merge(mget("entrez_HS"), df, by="entrez_HS") 
#or 
merge(data.frame(entrez_HS), df, by="entrez_HS") 

# entrez_HS entrez 
#1  11  1 
#2  11  1 
#3  12  2 
#4  19  9 
#5  19  10 
#6  19  9 
#7  19  10 
1

不使用任何包裝,我們可以試試這個:

# Create data 
df <- data.frame(entrez = c(1:10, 1), entrez_HS = c(11:19, 19, 20)) 
entrez_HS <- c(11, 11, 12, 19, 19) 

# Extract information, then collect it 
result <- lapply(entrez_HS, function(i) df[df$entrez_HS==i,]) 
result <- do.call("rbind", result) 
1

這裏是另一種選擇

rbind(df[match(entrez_HS, df$entrez_HS),], 
     df[duplicated(df$entrez_HS)|duplicated(df$entrez_HS, 
       fromLast=TRUE),]) 
# entrez entrez_HS 
#1  1  11 
#1.1  1  11 
#2  2  12 
#9  9  19 
#9.1  9  19 
#91  9  19 
#10  10  19 

或者使用dplyr

library(dplyr) 
left_join(data_frame(entrez_HS), df) 
# entrez_HS entrez 
#  <dbl> <dbl> 
#1  11  1 
#2  11  1 
#3  12  2 
#4  19  9 
#5  19  10 
#6  19  9 
#7  19  10 
相關問題