【发布时间】:2019-09-18 01:41:47
【问题描述】:
您好,我有一个数据框,其中包含不同的数据列(例如 x、y、z)和另一列指定选择哪一个。我想使用 dplyr::mutate (或类似的)创建一个新列,其值对应于“选择”指定的列中的值。但我想首先保留所有列。在我的真实数据中,我还有其他一些包含元数据的列。
示例数据:
library(dplyr)
testdf <- data.frame(x = 1:5, y = 11:15, z = 101:105, choose = c("z","y","x","y","z"))
我可以在我的示例中使用case_when 来完成这项工作,但在我的实际脚本中,生成的列名和选择列可能具有不同的值,因此我不想硬编码可能的名称。
期望的输出/测试
mutate(testdf, selectedValue = case_when(choose == "x" ~x,
choose == "y"~ y,
choose == "z"~ z, T~NA_integer_))
#> x y z choose selectedValue
#> 1 1 11 101 z 101
#> 2 2 12 102 y 12
#> 3 3 13 103 x 3
#> 4 4 14 104 y 14
#> 5 5 15 105 z 105
由reprex package (v0.3.0) 于 2019 年 9 月 18 日创建
【问题讨论】: