我有这个数据集
dt <- data.table(ID = c(1, 2, 3, 4),
sex = c("Man", "Woman", "Man", "Woman"),
age = c(35, 50, 23, 78),
q1= c(1, NA, NA, 1),
q2= c(1, 3, 2, NA),
q3= c(2, 1, 4, 4))
我需要根据q1,q2,q3创建新的变量,但我想对这些值进行分组;因此,值为1、2所有= YES,值为3的所有= NO,值为4的所有= IDK
因此,最终数据集应为
ID sex age q1 q2 q3 q1_cat q2_cat q3_cat
1 Man 35 1 1 2 YES YES YES
2 Woman 50 NA 3 1 NA NO YES
3 Man 23 NA 2 4 NA NO IDK
4 Woman 78 1 NA 4 YES NA IDK
3条答案
按热度按时间3phpmpom1#
我知道这是标记数据表,但另一种方法是使用
dplyr::mutate()
和dplyr::across()
,其中.names
参数和dplyr::case_when
用于逻辑:输出
tgabmvqs2#
zujrkrfu3#
这是添加这些列的一种简单方法,但如果整个数据集有更多问题,则可能会变得笨拙。
创建于2023-03-27带有reprex v2.0.2
直接更改q1,q2,... qN的内容是否有用?