gpt4 book ai didi

r - 通过在 R 中组合 mutate 和 case_when 创建新变量

转载 作者:行者123 更新时间:2023-12-05 08:46:53 24 4
gpt4 key购买 nike

我有不同用户的应用交互数据集。应用程序交互被保存为用户在特定一周内与该功能交互的天数。示例表如下所示(出于实用目的注释掉了 ID 和 weeknr):

tibble(
#id = (1, 1, 1),
#weeknr = (1, 2, 3),
var_1 = c(1, 2, 3, 2, 1),
var_2 = c(0, 0, 1, 4, 0),
var_3 = c(1, 1, 1, 0, 0)
)

现在的目标是基于 var_{1|3} 创建三个新列。如果对应用交互的计数大于 1,则分配 1,否则分配 0。我尝试了以下但没有成功:

tibble(
var_1 = c(1, 2, 3, 2, 1),
var_2 = c(0, 0, 1, 4, 0),
var_3 = c(1, 1, 1, 0, 0)
) %>%
mutate_all(
funs(case_when(
. > 0 ~ 1,
. == 0 ~ 0,
TRUE ~ NA
))
)

非常感谢任何帮助!

最佳答案

使用 dplyr::across 你可以这样做:

library(dplyr)

tibble(
var_1 = c(1, 2, 3, 2, 1),
var_2 = c(0, 0, 1, 4, 0),
var_3 = c(1, 1, 1, 0, 0)
) %>%
mutate(across(everything(), ~ case_when(
.x > 0 ~ 1,
.x == 0 ~ 0,
TRUE ~ NA_real_
),
.names = "{.col}_new")
)
#> # A tibble: 5 × 6
#> var_1 var_2 var_3 var_1_new var_2_new var_3_new
#> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 1 0 1 1 0 1
#> 2 2 0 1 1 0 1
#> 3 3 1 1 1 1 1
#> 4 2 4 0 1 1 0
#> 5 1 0 0 1 0 0

关于r - 通过在 R 中组合 mutate 和 case_when 创建新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68801029/

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