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

R语言逐行统计晚于指定日期的日期数并新增date_count列

需求说明

现有存储日期数据的DataFrame,日期存储格式为yyyy-mm-dd hh:mm:ss,需实现以下逻辑:

  • 排除ID、creation_date两列不参与统计
  • 逐行计算所有晚于2021-05-22 00:00:00的日期值总个数
  • 新增date_count列存储每行的统计结果

样例输入数据结构:

ID    creation_date         date1        date2        date230
1     2021-03-04 06:40:37   2021-03...   2022-06...   2022-06
2     2021-03-05 04:24:43   2021-04...   NA           NA
3     2022-03-19 20:37:07   2022-05...   2022-06...   NA
...
563   2022-04-23 20:59:45   2022-05...   2022-05...   2022-06 

期望输出结构:

ID    creation_date         date1         date2        date230       date_count
1     2021-03-04 06:40:37   2021-03...    2022-06...   2022-06...    123
2     2021-03-05 04:24:43   2021-04...    NA           NA            123
3     2022-03-19 20:37:07   2022-05...    2022-06...   NA            123
...
563   2022-04-23 20:59:45   2022-05...    2022-05...   2022-06...    123
pandas实现代码
import pandas as pd

# 定义时间统计阈值
cutoff_time = pd.to_datetime("2021-05-22 00:00:00")

# 自动筛选需要参与统计的列(排除ID和creation_date)
stat_columns = df.columns.difference(["ID", "creation_date"])

# 统一将待统计列转为datetime格式,无法解析的异常值转为空值
df[stat_columns] = df[stat_columns].apply(pd.to_datetime, errors="coerce")

# 逐行统计大于阈值的日期数量,结果存入新列
df["date_count"] = (df[stat_columns] > cutoff_time).sum(axis=1)
逻辑说明
  • 不需要手动枚举date1到date230的所有列,代码会自动识别所有非排除列,后续新增日期列也无需修改代码
  • 空值(NA/NaT)在比较和求和时会被自动跳过,不会计入统计结果,也不会触发报错
  • 先统一转datetime格式再比较,避免字符串格式日期比较出现逻辑错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:03:27