R中基于分组均值对变量水平进行分类的实现方法是否正确
你的实现思路是正确的,但存在2处可以优化和修正的问题:
- 核心逻辑成立:按
Neighborhood分组后计算分组房价均值、再给分组打分类标签的逻辑可以正常运行,能得到符合你需求的基础结果。但最后一层ifelse没有设置默认返回值,当某个街区的平均房价≥340000时,对应的Neighborhood.Cat会被赋值为NA,如果你的数据集里存在这类高房价街区,需要补充对应分类分支,比如改成ifelse(mean(price) < 340000, "E", "F")。 - 写法可优化:多层嵌套
ifelse的可读性和维护性都较差,更推荐使用dplyr内置的case_when()函数改写,同时建议给mean()函数添加na.rm = TRUE参数,避免分组内存在房价缺失值时均值计算返回NA的问题,改写后的参考代码如下:
ames.train.c <- ames.train.c %>% group_by(Neighborhood) %>% mutate(Neighborhood.Cat = case_when( mean(price, na.rm = TRUE) < 140000 ~ "A", mean(price, na.rm = TRUE) < 200000 ~ "B", mean(price, na.rm = TRUE) < 260000 ~ "C", mean(price, na.rm = TRUE) < 300000 ~ "D", mean(price, na.rm = TRUE) < 340000 ~ "E", TRUE ~ "F" # 可根据实际需求调整最高分类的命名 ))
内容的提问来源于stack exchange,提问作者Ahmed Mostafa
相关产品推荐
相关产品推荐

