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

如何利用R数据集的DAYS列生成对应的start、end两列

R语言按分组生成start、end列实现方法

你可以通过两种常用方式实现该需求:

方法1:使用dplyr包(代码简洁易读)

# 未安装包先运行 install.packages("dplyr")
library(dplyr)

mydata_result <- mydata %>%
  # 按Id分组
  group_by(Id) %>%
  mutate(
    # lag取上一行DAYS值,首行默认补0
    start = lag(DAYS, default = 0),
    end = DAYS
  ) %>%
  # 取消分组
  ungroup() %>%
  # 调整列顺序和目标结构一致
  select(Id, start, end, QS, Event)

方法2:基础R实现(无需额外安装依赖包)

# 按Id分组计算start列
mydata$start <- ave(mydata$DAYS, mydata$Id, FUN = function(x) c(0, x[-length(x)]))
# end列直接等于DAYS
mydata$end <- mydata$DAYS
# 调整列顺序
mydata_result <- mydata[, c("Id", "start", "end", "QS", "Event")]

运行两种方法得到的结果都和你给出的预期结构完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:06:02