r - 将 data.frames 中的值与不同行数进行匹配

标签 r dataframe

我有两个 data.frames df1df2df1 有 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/

相关文章:

r - R编程: How can I compute the difference between two cells in a data frame and save them in a new column

r - 将数据框列中的列表与 R 中的另一个列表进行子集化

python - 如何从 pandas 数据框中获取带有日期的记录 numpy 数组?

R代码迭代

r - pdf格式的多图图中的边距和图尺寸有问题

r - 使用ggplot2更改一组多行中某些行的线宽

scala - 在读取 CSV 时,最后一列在 Spark、Scala 中显示为 Null

R: - 为什么 head() 对于具有 NA 的列返回格式错误的输出?

r - 使用 ggplot() 绘制路径和点图

r - 打印在for循环中引发错误的列表项,并继续下一个列表项