我有两个 data.frames df1
和 df2
,df1
有 12,869 行,df2
有 173398 行。 df1
有 2 列,第一列是数字,第二列是字符。 df2
还有 2 列,均为数字。我想根据 df1[,2] 的字符值替换 df2 中的数字。这是我的 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]
但它们不起作用
最佳答案
使用不同的 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
关于r - 将 data.frames 中的值与不同行数进行匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21103170/