嗨,我有 10 个具有相同结尾的变量,我正在尝试使用 mutate_at 根据这些变量中的数据创建一个新变量并将其分配回数据帧。如果任何以“xyz”结尾的变量都有数据(即不是 NA),那么我想分配值的计数,否则为 NA。
df %<>% mutate_at(vars(ends_with("xyz")), funs(new_var = ifelse(!is.na(), 1, NA)))
上面的代码给出了一个错误,需要 !is.na() 的参数,但 vars 参数需要一个函数。我该如何结合这个?
编辑:这是可重现的示例和所需的输出:
`# A tibble: 6 x 6
1_abc 1_xyz 2_abc 2_xyz 3_abc 3_xyz
1 NA 1 NA 1 NA NA
2 NA NA NA NA NA NA
3 NA NA NA 1 NA NA
4 NA NA NA NA NA NA
5 NA NA NA NA NA NA
6 NA 1 NA NA NA NA`
所需的输出将是一个变量,例如 xyz_num,如果所有 _xyz 变量都是 NA,则值将为 NA;如果任何 _xyz 变量不是 NA,则为非空变量的计数。
`# A tibble: 6 x 7
1_abc 1_xyz 2_abc 2_xyz 3_abc 3_xyz xyz_num
1 NA 1 NA 1 NA NA 2
2 NA NA NA NA NA NA NA
3 NA NA NA 1 NA NA 1
4 NA NA NA NA NA NA NA
5 NA NA NA NA NA NA NA
6 NA 1 NA NA NA NA 1`