我想:
- 使用
across
andcase_when
检查列 A1-A3 == 1 - 连接 A1-A3 == 1 和
- 用连接的列名改变一个新列
我的数据框:
df <- tribble(
~ID, ~A1, ~A2, ~A3,
1, 0, 1, 1,
2, 0, 1, 1,
3, 1, 1, 1,
4, 1, 0, 1,
5, 0, 1, 0)
期望的输出:
# A tibble: 5 x 5
ID A1 A2 A3 New_Col
<dbl> <dbl> <dbl> <dbl> <chr>
1 1 0 1 1 A2 A3
2 2 0 1 1 A2 A3
3 3 1 1 1 A1 A2 A3
4 4 1 0 1 A1 A3
5 5 0 1 0 A2
到目前为止,我已经尝试过:
df %>%
rowwise() %>%
mutate(New_Col = across(A1:A3, ~ case_when(. == 1 ~ paste0("colnames(.)", collapse = " "))))
不工作输出:
ID A1 A2 A3 New_Col$A1 $A2 $A3
<dbl> <dbl> <dbl> <dbl> <chr> <chr> <chr>
1 1 0 1 1 NA colnames(.) colnames(.)
2 2 0 1 1 NA colnames(.) colnames(.)
3 3 1 1 1 colnames(.) colnames(.) colnames(.)
4 4 1 0 1 colnames(.) NA colnames(.)
5 5 0 1 0 NA colnames(.) NA
我想学什么:
- 是否可以用于
across
检查多个列的条件 - 如果是的话,如何查看 ~ of 之后的部分
case_when
以获取特定的列名 - 使用后如何只获得一列
mutate
,across
而case_when
不是像这里的 3。
我以为我已经能够掌握这个任务,但不知怎的,我失去了它......