如何在R Studio中通过中位数分割为数据框创建新列?
中位数分割并新增分组列的解决方案
你当前的代码是把数据拆成了两个独立的数据框,但要在原数据框新增一列标记分组,有两种简单实现方式:
方法1:Base R 实现
直接用ifelse函数生成分组标记,一步到位:
# 计算中位数(加na.rm处理缺失值,避免报错) medianpcr <- median(honourswork$PCR.x, na.rm = TRUE) # 新增分组列到原数据框 honourswork$PCR_group <- ifelse(honourswork$PCR.x <= medianpcr, "低分组", "高分组")
方法2:Tidyverse(dplyr)实现
如果你习惯用dplyr的链式操作,写法更连贯:
library(dplyr) honourswork <- honourswork %>% mutate( # 临时计算中位数,用于分组判断 temp_median = median(PCR.x, na.rm = TRUE), # 生成分组标签 PCR_group = case_when( PCR.x <= temp_median ~ "低分组", TRUE ~ "高分组" ) ) %>% select(-temp_median) # 可选:移除临时生成的中位数列
补充说明
- 分组标签可以自定义,比如用数字标记:
ifelse(honourswork$PCR.x <= medianpcr, 0, 1) - 如果仍需要拆分出两个独立数据框,可基于新增的分组列筛选:
highmedian <- filter(honourswork, PCR_group == "低分组") lowmedian <- filter(honourswork, PCR_group == "高分组")
内容的提问来源于stack exchange,提问作者waqar mohiuddin
相关产品推荐
相关产品推荐

