如何从r中的另一个数据框中提取相应的值

时间:2018-07-12 17:23:42

标签: r

我有两个数据框:

    d1=read.table(text="X1   X2   X3   X4   X5
    1212 1213 1214 1216 1215
    1194 1195 1193 1212 1190
    1555 1554 1553 1556 1557
    1212 1213 1214 1216 1215
    1194 1195 1193 1212 1190
    1212 1213 1214 1216 1215
     904 1321 1322 1323 1324
    1212 1213 1214 1216 1215
    1206 1207 1208 1209 1210
    1206 1207 1208 1209 1210", header=T, stringsAsFactors=F)

       d2=read.table(text="X1    X2    X3    X4    X5    LG  
    Chr11 Chr11 Chr11 Chr11 Chr11 Chr11  
    Chr11 Chr11 Chr11 Chr11 Chr11 Chr11  
    Chr14 Chr12 Chr15 Chr10 Chr15 Chr15  
    Chr11 Chr11 Chr11 Chr11 Chr11 Chr11  
    Chr11 Chr11 Chr11 Chr11 Chr11 Chr11  
    Chr11 Chr11 Chr11 Chr11 Chr11 Chr11  
    Chr08 Chr12 Chr12 Chr12 Chr12 Chr12
    Chr11 Chr11 Chr11 Chr11 Chr11 Chr11  
    Chr11 Chr11 Chr11 Chr11 Chr11 Chr11  
    Chr11 Chr11 Chr11 Chr11 Chr11 Chr11", header=T, stringsAsFactors=F)  

我想根据评估结果从d1中提取值:如果d2 $ LG等于X1到X5列中的值。提取d1中的值,其中d2中的对应位置是与d2 $ LG具有相同值的第一个位置。提取的值是“ PO”列。 预期结果如下:

       X1    X2    X3    X4    X5    LG PO
    Chr11 Chr11 Chr11 Chr11 Chr11 Chr11 1212
    Chr11 Chr11 Chr11 Chr11 Chr11 Chr11 1194
    Chr14 Chr12 Chr15 Chr10 Chr15 Chr15 1553
    Chr11 Chr11 Chr11 Chr11 Chr11 Chr11 1212
    Chr11 Chr11 Chr11 Chr11 Chr11 Chr11 1194
    Chr11 Chr11 Chr11 Chr11 Chr11 Chr11 1212
    Chr08 Chr12 Chr12 Chr12 Chr12 Chr12 1321
    Chr11 Chr11 Chr11 Chr11 Chr11 Chr11 1212
    Chr11 Chr11 Chr11 Chr11 Chr11 Chr11 1206
    Chr11 Chr11 Chr11 Chr11 Chr11 Chr11 1206

谢谢您的帮助。

1 个答案:

答案 0 :(得分:2)

我们可以为此使用row/column索引。通过将前5列(“ X1”至“ X5”)与“ d2”的“ LG”列进行比较来创建列索引,并使用max.col,{{1 }}与行索引(cbind)并使用它来提取与'd1'对应的值(假设'd1'和'd2'都具有相同的尺寸)

seq_len(nrow(d2))