【发布时间】:2022-01-27 05:58:37
【问题描述】:
我正在处理一些调查数据,我想用另一个调查项目替换一个调查项目/列的内容,同时保留原始单元格内容。 Ex - 如果 Q2_1.x 缺失,将 Q2_1.x 替换为 Q2_1.y。
这是我的数据示例:
org_dat <- read_table(\'ID Q2_1.x Q2_2.x Q2_1.y Q2_2.y Q14_1.x Q14_1.y Q15
1 Yes NA NA NA Sometimes NA NA
2 -99 NA No NA NA Always Yes
3 NA NA NA NA NA NA NA
4 NA NA NA No NA NA No
5 NA NA NA NA NA Always NA
6 NA NA NA No NA NA NA\') %>% mutate_all(as.character)
这是我想要的输出:
dat_out <- read_table(\'ID Q2_1 Q2_2 Q14_1 Q15
1 Yes NA Sometimes NA
2 No NA Always Yes
3 NA NA NA NA
4 NA No NA No
5 NA NA Always NA
6 NA No NA NA\')
当前解决方案我知道我可以单独替换这些列中的每一个,但是我有很多列要处理,我想使用一种智能的 dplyr/grepl 方法来解决这个问题!有任何想法吗?我总是用 Q*.y 替换 Q*.x。
org_dat %>% mutate(Q2_1.x = case_when(is.na(Q2_1.x) ~ Q2_1.y,
TRUE ~ Q2_1.x)) %>%
mutate(Q2_2.x = case_when(is.na(Q2_2.x) ~ Q2_2.y,
TRUE ~ Q2_2.x)) %>%
mutate(Q14_1.x = case_when(is.na(Q14_1.x) ~ Q14_1.y,
TRUE ~ Q14_1.x)) %>%
rename(Q2_1 = Q2_1.x,
Q2_2 = Q2_2.x,
Q14_1 = Q14_1.x) %>%
select(-matches(\"x|y\"))