r - 根据 R 中单列中给定的列名从其他列复制值

标签 r

我在 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/

相关文章:

r - 计算一个基于类型和距离的惩罚指标

r - 如何在ggplot2中混合aes_()和算术计算?

r - 在 R 中将 12 小时转换为 24 小时

r - r 中三参数 Weibull 分布的最大似然估计

c - 使三角形(或通常为正方形)矩阵对称

java - 如何将 sdf_predict() 与库 (sparklyr) 中 ml_pca() 提供的模型一起使用

r - 在R中生成直方图时出错

r - 如何在 R Leaflet 标记弹出窗口中调整大图像的大小?

r - 属性变量名称为命名向量

r - 具有未知变量集的 expand.grid