问题描述
rowid A B
101 1 3
102 2 3
103 1 4
104 2 4
我想用 R 中相应的 rowid(请参考下表)替换 A 和 B 列中的值。A 和 B 列中的值基于 rowid 的顺序。例如,我想将 A 列中的值 3 替换为 103 的 rowid。如果有人可以提供任何建议,我将不胜感激。
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))