用R中的行名替换值(对应行的顺序)
Replace values (corresponding to the order of row) with the row name in R
我有一个类似这样的数据框:
rowid A B
101 1 3
102 2 3
103 1 4
104 2 4
我想用R中对应的rowid(请参考下面的table)替换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
在基础 R 中 lapply
:
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))
我有一个类似这样的数据框:
rowid A B
101 1 3
102 2 3
103 1 4
104 2 4
我想用R中对应的rowid(请参考下面的table)替换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
在基础 R 中 lapply
:
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))