You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中按ID的天数条件创建新分类变量并保留原有变量

R语言实现方法

方案1:tidyverse实现(推荐入门用户使用,语法直观)

如果还未安装tidyverse包,先运行安装命令:
install.packages("tidyverse")

加载包后执行处理代码:

library(tidyverse)

# 替换df为你自己的数据集名称,ID、天数替换为对应列的实际名称
df_result <- df %>%
  group_by(ID) %>%
  mutate(
    新分类 = ifelse(mean(天数 >= 90, na.rm = TRUE) >= 0.5, "A", "B")
  ) %>%
  ungroup()

代码逻辑说明:

  • 按ID分组后,对每个ID的所有记录计算「天数>=90」的占比(逻辑值求均值等价于统计符合条件的占比)
  • 占比≥50%则新分类赋值为A,否则为B
  • mutate仅新增列,原数据集的所有变量都会完整保留
  • na.rm = TRUE用于自动忽略天数列的缺失值,若无缺失可以删除该参数

方案2:Base R实现(无需安装额外包)

不需要安装第三方包,直接用R自带函数处理:

# 先统计每个ID的符合条件占比
id_stat <- aggregate(天数 ~ ID, data = df, FUN = function(x) mean(x >= 90, na.rm = TRUE))
# 匹配占比到原数据集,新增分类列
df$新分类 <- ifelse(id_stat$天数[match(df$ID, id_stat$ID)] >= 0.5, "A", "B")

验证建议

处理完成后可以运行View(df_result)或者head(df_result, 20)查看结果是否符合预期。

内容的提问来源于stack exchange,提问作者user16597745

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 23:42:03