r-如何用数据帧中的值替换二进制矩阵中的值



我的矩阵看起来像这样:

Plot   A  B  C  
1     1  0  0
2     1  0  1
3     1  1  0

我有一个数据帧,看起来像这个

A  5
B  4
C  2 

我想做的是替换";1〃;矩阵中的值与数据帧中的相应值,如下所示:

Plot   A  B  C  
1     5  0  0
2     5  0  2
3     5  4  0

关于如何在R中做到这一点,有什么建议吗?非常感谢。

带有tidyverse的选项

library(dplyr)
df1 %>%
mutate(across(all_of(df2$col1),
~ replace(.x, .x== 1, df2$col2[match(cur_column(), df2$col1)])))

-输出

Plot A B C
1    1 5 0 0
2    2 5 0 2
3    3 5 4 0

数据

df1 <- structure(list(Plot = 1:3, A = c(1L, 1L, 1L), B = c(0L, 0L, 1L
), C = c(0L, 1L, 0L)), class = "data.frame", row.names = c(NA, 
-3L))
df2 <- structure(list(col1 = c("A", "B", "C"), col2 = c(5, 4, 2)), 
class = "data.frame", row.names = c(NA, 
-3L))

相关内容

  • 没有找到相关文章

最新更新