将值(对应于行的顺序)替换为R中的行名



我有一个类似这样的数据帧:

rowid A B 
101  1 3
102  2 3
103  1 4
104  2 4

我想用R中对应的rowid(请参阅下表(替换A和B列中的值。A和B栏中的值基于rowid的顺序。例如,我想将a列中的值3替换为rowid 103。如果有人能提供任何建议,我将不胜感激。

rowid  A   B
101  101 103
102  102 103
103  101 104
104  102 104

使用dplyr可以执行:

library(dplyr)
df %>% mutate(across(-rowid, ~rowid[.]))
#  rowid   A   B
#1   101 101 103
#2   102 102 103
#3   103 101 104
#4   104 102 104

lapply:的基地R

df[-1] <- lapply(df[-1], function(x) df$rowid[x])

数据

df <- structure(list(rowid = 101:104, A = c(1L, 2L, 1L, 2L), B = c(3L, 
3L, 4L, 4L)), class = "data.frame", row.names = c(NA, -4L))

最新更新