如何在RStudio中创建因子变量按体重分组并添加到数据框
R语言体重分组代码问题修正
原代码错误点
- 开头三行生成随机数的语句未赋值,属于无效代码可删除
- 未正确引用数据框中的体重列:需要使用
DF$Weight调用数据框DF里的体重列,直接写weight或rnormR无法识别对应变量 - 区间判断语法错误:判断体重在60-70区间需要使用
DF$Weight >=60 & DF$Weight <=70,原代码中weight = 61 - 70的写法完全不成立,单等号在R中是赋值操作而非判断 - 分组完成后未将生成的分组变量添加回原数据框
基于原逻辑的修正代码
# 创建示例数据框 DF <- data.frame(Height = rnorm(50, 170, 5), Weight = rnorm(50, 65, 8)) # 初始化分组因子 weight.group = factor(NA, levels = c("<60", "60-70", ">70")) # 匹配<60的样本 idx = which(DF$Weight < 60) weight.group[idx] = "<60" # 匹配60-70的样本 idx = which(DF$Weight >= 60 & DF$Weight <= 70) weight.group[idx] = "60-70" # 匹配>70的样本 idx = which(DF$Weight > 70) weight.group[idx] = ">70" # 将分组列添加回原数据框 DF$weight.group <- weight.group
更简便的官方函数实现
R内置的cut函数专门用于连续变量分组,不需要手动写多次判断,代码更简洁不易出错:
DF <- data.frame(Height = rnorm(50, 170, 5), Weight = rnorm(50, 65, 8)) DF$weight.group <- cut(DF$Weight, breaks = c(-Inf, 60, 70, Inf), labels = c("<60", "60-70", ">70"), right = TRUE) # right参数控制区间闭合方向:right=TRUE表示区间左开右闭,70会被分到60-70组;right=FALSE表示左闭右开,70会被分到>70组,可按需调整
内容的提问来源于stack exchange,提问作者Not a Wrench
相关产品推荐
相关产品推荐

