如何按条件将数据框数值列转为字符型并替换≤30的值?
解决方法
直接用dplyr的工具一步就能完成数值替换+类型转换,不用先单独生成逻辑列,给你两种简洁写法:
方法1:用case_when(适合后续加更多条件的场景)
library(dplyr) # 直接修改原var1列,也可以把var1改成新列名生成新列 Mydata <- Mydata %>% mutate(var1 = case_when( var1 <= 30 ~ "<=30", TRUE ~ as.character(var1) # 其他数值转成字符型保留原样 ))
方法2:用ifelse(简单二元条件更省事)
library(dplyr) Mydata <- Mydata %>% mutate(var1 = ifelse(var1 <= 30, "<=30", as.character(var1)))
你的代码报错原因
你之前的问题出在两点:
less_than_30是逻辑型列,你却用== "TRUE"(带引号的字符)去匹配,逻辑值直接写== TRUE就行- 逻辑型列不能直接赋值字符型内容,类型不兼容才会报转换错误。要是硬要按你原来的思路改,得先把逻辑列转成字符型再替换,但完全没必要绕这个弯。
内容的提问来源于stack exchange,提问作者Espejito
相关产品推荐
相关产品推荐

