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

R中按分组变量计算各日期与组内首行日期的天数差

解决方案

你原有代码中使用lag(B)的逻辑是取当前行的上一行值做计算,得到的是相邻日期的差值,与你需要的「组内所有日期和本组第一个日期计算差值」的需求不符。调整时需要做两处修改:

  1. 先将B列从字符串格式转为日期格式,否则日期计算会报错
  2. 使用first()函数提取每个分组的第一行B列值作为计算基准

完整可运行代码

library(dplyr)

# 原始数据构造
A <- c("1-23", "1-23", "1-23", "10-23", "10-23", "10-23", "10-23", "10-23", "10-23")
B <- c("2013-01-02", "2013-01-17", "2013-01-31", "2014-08-04", "2014-08-25", "2014-09-02", "2014-09-08", "2014-09-30", "2014-09-15")
df <- data.frame(A,B)

# 调整后的计算逻辑
df2 <- df %>%
  mutate(B = as.Date(B)) %>%
  group_by(A) %>%
  mutate(C = as.numeric(difftime(B, first(B), units = "days")))

输出验证

运行后得到的结果和你预期的C列完全一致:

print(df2)
# A tibble: 9 × 3
# Groups:   A [2]
  A     B              C
  <chr> <date>     <dbl>
1 1-23  2013-01-02     0
2 1-23  2013-01-17    15
3 1-23  2013-01-31    29
4 10-23 2014-08-04     0
5 10-23 2014-08-25    21
6 10-23 2014-09-02    29
7 10-23 2014-09-08    35
8 10-23 2014-09-30    57
9 10-23 2014-09-15    42

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:27:03