R语言如何用dplyr对数据框列数值按指定区间分组重编码
错误原因
recode() 函数设计为单值匹配工具,无法识别区间表达式。你写的 `1:249` 会被解析为字符串,和数值类型的V1列无法匹配,因此会生成大量NA值。
解决方案1:使用case_when()(灵活自定义规则首选)
dplyr包中的case_when()支持多条件判断,非常适合自定义区间编码:
首先确保加载dplyr包:
library(dplyr)
编码代码:
# 生成新列存储编码结果,如需覆盖原V1可将V1_cluster改为V1 DF <- DF %>% mutate( V1_cluster = case_when( V1 >= 1 & V1 <= 249 ~ 1, V1 >= 250 & V1 <= 1499 ~ 2, V1 >= 1500 ~ 3 ) )
解决方案2:使用cut()(连续变量分箱首选)
cut()是R原生的连续变量分箱函数,适合规则规整的区间分组:
DF <- DF %>% mutate( # 如需输出数值型编码,可在cut()外层套as.integer() V1_cluster = cut( x = V1, breaks = c(-Inf, 249, 1499, Inf), # 区间断点 labels = c(1, 2, 3), # 对应区间的编码 right = TRUE # 区间为左开右闭,刚好匹配1~249、250~1499、≥1500的规则 ) )
内容的提问来源于stack exchange,提问作者Sascha
相关产品推荐
相关产品推荐

