gpt4 book ai didi

R dplyr 从带有列名的列中选择值以在单独的列中选择

转载 作者:行者123 更新时间:2023-12-04 18:00:30 25 4
gpt4 key购买 nike

嗨,我有一个包含不同数据列(比如 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

创建于 2019-09-18 由 reprex package (v0.3.0)

最佳答案

这是一个 data.table 解决方案。在这种情况下,我不认为 dplyr 解决方案比其他解决方案(特别是 base r 和 data.table)更具可读性。

library(data.table)
testdt <- data.table(x = 1:5, y = 11:15, z = 101:105, choose = c("z","y","x","y","z"))
testdt[,selectedValue := get(choose), by = choose]
testdt
#> 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

创建于 2019-09-17 由 reprex package (v0.3.0)

关于R dplyr 从带有列名的列中选择值以在单独的列中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57983923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com