【发布时间】:2020-12-20 21:21:50
【问题描述】:
我有一个名为“调查”的数据集,其中包含个人 ID 行和包含许多问题的列。我需要将 1 列中的值重新编码为 NA 并将观察结果移动到另一列。
例如:
ID Food Vegetable
aaa NA NA
bbb NA lemon
ccc NA sprout
ddd fruit NA
eee fruit NA
fff NA watermelon
我想将属于 ID bbb 和 fff 的 lemon 和 watermelon 观察值更改为将它们放入 Food 列并将它们重命名为 fruit(调查受访者将它们放在错误的位置列)并将NA 留在vegetable 列中。
看起来像:
ID Food Vegetable
aaa NA NA
bbb fruit NA
ccc NA sprout
ddd fruit NA
eee fruit NA
fff fruit NA
我用过:
survey<- survey %>%
mutate(food = if_else(str_detect(Vegetable,"(lemon)|(watermelon)"),"fruit", Food))
这可以将food 列中的NA 转换为fruit,但它不能与vegetable 列中的NA 一致,它还会转换food 中的所有其他水果列到NA!
数据:
structure(list(ID = c("aaa", "bbb", "ccc", "ddd", "eee", "fff"
), Food = c(NA, NA, NA, "fruit", "fruit", NA), Vegetable = c(NA,
"lemon", "sprout", NA, NA, "watermelon")), class = "data.frame", row.names = c(NA,
-6L))
P.S.:这是对a previous question I asked 的跟进,已得到答复。这与以前的问题不完全相同,这就是我开始一个新问题的原因。
dplyr 版本 (1.0.2)
【问题讨论】:
-
这一步之后可以做
mutate(Vegetable = NA_character_)
标签: r data-cleaning recode