How to use a dataset to extract specific columns from another dataset?
            Asked
            
        
        
            Active
            
        
            Viewed 116 times
        
    -1
            
            
        - 
                    1You can use `df1[, df2$snp]` – dario Mar 06 '20 at 17:06
- 
                    Would you know how to do this so that it retains the "i..POP" column in data2? – Daniel.Payter Mar 06 '20 at 20:04
2 Answers
0
            
            
        It's always better to supply a minimal reproducible example:
df1 <- data.frame(V1 = 1:3,
                  V2 = 4:6,
                  V3 = 7:9)
df2 <- data.frame(snp = c("V2", "V3"),
                  stringsAsFactors=FALSE)
Now we can use a character vector to index the columns we want:
df1[, df2$snp]
Returns:
V2 V3 1 4 7 2 5 8 3 6 9
Edit:
Would you know how to do this so that it retains the "i..POP" column in data2?
df1 <- data.frame(ID = letters[1:3],
                  V1 = 1:3,
                  V2 = 4:6,
                  V3 = 7:9)
names(df1)[1] <- "ï..POP"
df2 <- data.frame(snp = c("V2", "V3"),
                  stringsAsFactors=FALSE)
We can use c to combine the names of the columns:
df1[, c("ï..POP", df2$snp)]
ï..POP V2 V3 1 a 4 7 2 b 5 8 3 c 6 9
 
    
    
        dario
        
- 6,415
- 2
- 12
- 26
- 
                    
- 
                    @mob Going from the question and presented data I was assuming that. But you are of course right... Anyways, that's where a MRE comes in handy. – dario Mar 06 '20 at 17:13
0
            
            
        Use intersect to find common names between two data sets.
snp.common <- intersect(data1$snp, colnames(data2$snp))
data2.separated <- data2[,snp.common]
 
    
    
        mob
        
- 117,087
- 18
- 149
- 283
