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

如何在R中创建变量统计month_x大于对应max_x的次数

解决方案

方法一:Base R 实现

利用列名的对应关系提取目标列,逐行比较后求和:

# 提取所有month和max开头的列
month_cols <- grep("^month", names(df), value = TRUE)
max_cols <- grep("^max", names(df), value = TRUE)

# 逐行统计month_x > max_x的有效数量(自动忽略NA)
df$count <- rowSums(df[month_cols] > df[max_cols], na.rm = TRUE)

运行后查看结果:

df
#      id month1 month2 month3 max1 max2 max3 count
# 1  Lars      1      2     NA    0    3   NA     1
# 2 Susan      1      2      3    0    1    2     2
# 3  Juan      1      2      3    2    3    4     0

方法二:Tidyverse 实现

通过转置长格式数据完成比较,再分组求和:

library(tidyverse)

df <- df %>%
  # 拆分列名,将month/max和数字部分分离
  pivot_longer(cols = -id, 
               names_to = c(".value", "num"), 
               names_pattern = "(month|max)(\\d+)") %>%
  # 标记month是否大于对应max
  mutate(gt_flag = month > max) %>%
  # 按id分组统计有效标记数
  group_by(id) %>%
  summarise(count = sum(gt_flag, na.rm = TRUE)) %>%
  # 合并回原数据
  right_join(df, by = "id") %>%
  # 调整列顺序
  select(id, month1:max3, count)

核心说明

  • 两种方案都适配month_x和max_x的命名规则,新增更多组(如month4/max4)时无需修改代码
  • na.rm = TRUE会自动忽略同时为NA的month和max组合,不纳入统计

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 20:25:53