我的矩阵看起来像这样:
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))