在R中根据数值条件替换文本:创建新列X的实现问题
解决case_when处理剩余条件的问题
你可以通过在case_when中添加匹配所有剩余情况的条件来实现需求,注意要统一新列的数据类型(因为"<5"是字符串,原value是数值,需要把数值转成字符类型):
library(dplyr) # 你的数据集 df <- structure(list(value = c(2, 3, 5, 10, 11, 12)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -6L)) # 创建新列X df <- df %>% mutate(X = case_when( value < 5 ~ "<5", # 处理value <5的情况 TRUE ~ as.character(value) # 处理所有剩余情况(即value >=5),转成字符统一类型 ))
代码说明
case_when按顺序匹配条件,第一个条件value <5 ~ "<5"直接返回指定字符串;- 第二个条件
TRUE ~ as.character(value)会匹配所有未被前面条件覆盖的行(也就是value >=5的情况),将原value转为字符类型,保证新列X的元素类型一致; - 如果不手动转字符,R会自动将新列转为字符类型,但显式转换更清晰。
输出结果
运行代码后,数据集会变成:
#> # A tibble: 6 × 2 #> value X #> <dbl> <chr> #> 1 2 <5 #> 2 3 <5 #> 3 5 5 #> 4 10 10 #> 5 11 11 #> 6 12 12
内容的提问来源于stack exchange,提问作者user19745561
相关产品推荐
相关产品推荐

