我有针对不同用户的应用程序交互数据集。应用交互保存为用户在特定周内与该功能交互的天数。示例表看起来像(出于实用目的注释掉 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)
)
Run Code Online (Sandbox Code Playgroud)
现在的目标是基于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
))
)
Run Code Online (Sandbox Code Playgroud)
任何帮助深表感谢!
利用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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
57 次 |
最近记录: |