您好,我有一个数据框,其中包含不同的数据列(例如 x, y, z )和另一列,用于指定要选择的数据列。我想使用 dplyr::mutate (或类似的)来创建一个新列,该列的值与“choose”指定的列中的值相对应。但我想首先保留所有列。在我的真实数据中,我还有一些其他带有元数据的列。
示例数据:
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
Created on 2019-09-18 by the reprex package (v0.3.0)