我有两个data.frames df1
和df2
,df1
有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]
但是他们不起作用
答案 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