匹配来自具有不同行数的data.frames的值

时间:2014-01-13 23:06:02

标签: r dataframe

我有两个data.frames df1df2df1有12,869行,df2有173398. df1有2列,第一列是数字,第二个是字符。 df2还有2列数字。我想根据df2的字符值替换df1[,2]中的数字。以下是我的data.frames的头部如何:

>head(df1)
 ids  genes
1  1   NSD1
2  2  MAST2
3  3    PHB
4  4 IKBKAP
5  5  CDC42
6  6   SAT1

>head(df2)
    X1   X2
1  933 3982
2 1791 2504
3 3379 3394
4 1381 9732
5 2002 6408
6 3947 7579

非常感谢

我尝试过这两种方法:

df2[,1] <- setNames(df1$genes, df2$X1)[as.character(unlist(df2[,1]))]

df2[,1] <- df2[match(df1[,1], df2[,1]),2]

但是他们不起作用

1 个答案:

答案 0 :(得分:2)

使用其他df2进行演示,您可以执行以下操作:

df2 <- read.table(text="
X1   X2
1  2 3
2 1 4
3 5 1
4 3 5
5 1 2
6 2 1", header=T)

df2$X1 <- as.character(df1$genes)[match(df2$X1, df1$ids)]
df2$X2 <- as.character(df1$genes)[match(df2$X2, df1$ids)]

df2
     X1     X2
1 MAST2    PHB
2  NSD1 IKBKAP
3 CDC42   NSD1
4   PHB  CDC42
5  NSD1  MAST2
6 MAST2   NSD1

HTH