我在 R 中有一个大数据集,其中一列的每一行都有特定的列名(目标),如下所示。我想要做的是检查每一行的列名,复制该特定列的值,然后将其粘贴回“目标”列的相关行。
target col1 col2 col3
col1 green one dog
col1 pink two cat
col3 blue three spider
col2 black four pig
col3 purple five elephant
col2 yellow six lion
这是我想要的结果:
target col1 col2 col3
green green one dog
pink pink two cat
spider blue three spider
four black four pig
fox purple five fox
six yellow six lion
我尝试了下面的代码,但在前几百行之后,它复制了错误的值。
df$target[df$target=="[col1]"] <- df$col1
df$target[df$target=="[col2]"] <- df$col2
df$target[df$target=="[col3]"] <- df$col3
df$target[df$target=="[col4]"] <- df$col4
有什么建议吗? 提前致谢
最佳答案
你可以使用sapply
:
df$test <- sapply(1:nrow(df),
function(x) df[x, names(df) == df[x,1]])
输出:
# target col1 col2 col3 test
# 1 col1 green one dog green
# 2 col1 pink two cat pink
# 3 col3 blue three spider spider
# 4 col2 black four pig four
# 5 col3 purple five elephant elephant
# 6 col2 yellow six lion six
请注意,我创建了一个 test
列来检查,但您可以直接覆盖 target
数据
df <- read.table(text = "target col1 col2 col3
col1 green one dog
col1 pink two cat
col3 blue three spider
col2 black four pig
col3 purple five elephant
col2 yellow six lion", header = TRUE)
关于r - 根据 R 中单列中给定的列名从其他列复制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74972393/