2017-05-12 147 views
-1

我有兩個數據幀。我想基於另一個數據框列從數據框中提取所有列。如何基於另一個數據框中的列從數據框中提取所有列?

df1: 

sample 
GY 
AP 
A9 
MB 
AU 

df2: 

num start end length GY A9 MB AP JK GH AU 
    2 23 24 567 5 6 7 8 9 0 1 
    2 3  44 57 8 6 7 3 4 0 9 
    2 234 54 67 5 6 7 8 9 0 1 

result: 
    num start end length GY A9 MB AP AU 
    2 23 24 567 5 6 7 8 1 
    2 3  44 57 8 6 7 3 9 
    2 234 54 67 5 6 7 8 1 

我試圖以這種方式,但它沒有工作:

u <- df1[df1$sample %in% colnames(df2),] 

誰能告訴我如何做到這一點?

回答

2

有了:

df2[, c(1:4, which(colnames(df2) %in% df1$sample))] 

你:

num start end length GY A9 MB AP AU 
1 2 23 24 567 5 6 7 8 1 
2 2  3 44  57 8 6 7 3 9 
3 2 234 54  67 5 6 7 8 1 

而且這也適用:

df2[, c(rep(TRUE,4), tail(colnames(df2) %in% df1$sample, -4))] 
相關問題