如何用dplyr清理R数据框列:将y/yes改为Yes、nop/no改为No
使用dplyr清理
has_elevator列的方法 当然可以,用dplyr的几个函数就能轻松实现需求,下面提供两种常用的处理方式:
方法1:使用recode()函数
recode()适合这种明确值映射的场景,直接指定每个需要替换的原始值对应的目标结果:
library(dplyr) # 假设你的数据框名为df df_cleaned <- df %>% mutate(has_elevator = recode(has_elevator, "y" = "Yes", "yes" = "Yes", "nop" = "No", "no" = "No"))
方法2:使用case_when()函数
如果后续需要扩展更多匹配条件,case_when()的灵活性更强,它会按顺序匹配设定的条件:
df_cleaned <- df %>% mutate(has_elevator = case_when( # 转小写后匹配,兼容可能存在的大写变体(比如"YES") tolower(has_elevator) %in% c("y", "yes") ~ "Yes", tolower(has_elevator) %in% c("no", "nop") ~ "No", # 保留未匹配的原始值(如果有必要,也可以改为NA) TRUE ~ has_elevator ))
验证处理结果
可以用table()函数查看处理后的值分布,确认是否统一:
table(df_cleaned$has_elevator)
内容的提问来源于stack exchange,提问作者sa90210
相关产品推荐
相关产品推荐

