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

R语言如何按指定日期列范围对行求和并解决seq函数报错

问题解决方法

报错原因

你代码中经过format()处理的first_date和actual_date是字符串类型,seq()函数无法直接对字符串格式的日期生成连续序列,因此抛出类型错误。

正确实现代码

依赖lubridate包版本(适配你原代码的写法)

library(lubridate)

# 动态取当年首日、上月首日的逻辑
first_date <- floor_date(Sys.Date(), unit = "year")
actual_date <- floor_date(Sys.Date() %m-% months(1), unit = "month")

# 若测试提供的2021年示例数据,替换为以下两行即可
# first_date <- dmy("01/01/2021")
# actual_date <- dmy("01/08/2021")

# 生成匹配列名格式的日期列名列表
target_cols <- format(seq.Date(first_date, actual_date, by = "month"), "%d/%m/%Y")

# 逐行求和
df$ytd <- rowSums(df[, target_cols], na.rm = TRUE)

纯基础R版本(无需额外依赖)

# 动态取当年首日、上月首日的逻辑
first_date <- as.Date(paste0(format(Sys.Date(), "%Y"), "-01-01"))
actual_date <- seq.Date(as.Date(cut(Sys.Date(), "month")) - 1, length.out = 2, by = "-1 month")[2]

# 若测试提供的2021年示例数据,替换为以下两行即可
# first_date <- as.Date("2021-01-01")
# actual_date <- as.Date("2021-08-01")

target_cols <- format(seq.Date(first_date, actual_date, by = "month"), "%d/%m/%Y")
df$ytd <- rowSums(df[, target_cols], na.rm = TRUE)

输出效果说明

以你提供的示例数据为例,执行后新增的ytd列结果为:96、184、104、96,符合1-8月对应列逐行求和的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:36:02