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

如何在R中识别序列终止并生成标记变量

R语言新手求助:为分组序列添加终止标记变量

我是R语言新手,首次提问,若该问题已有解答敬请谅解。

我需要在数据集中按id识别序列,为每个id的最后一条记录添加终止标记。

示例输入数据集

idlengthofstay
11
12
13
21
22
31
32
33
34

期望输出结果

idlengthofstaynewvariable
110
120
131
210
221
310
320
330
341

我希望创建newvariable,序列进行时取值为0,序列终止(即每个id的最后一行)时取值为1,目前毫无头绪,恳请帮助,如有需要可补充更多信息。


解决方案

这里提供两种两种实现方式,适合不同使用习惯:

方法一:使用dplyr包(推荐,逻辑清晰易读)

如果还没安装dplyr,先执行安装命令:

install.packages("dplyr")

加载包并处理数据(假设你的数据集存储在数据框df中):

library(dplyr)

df <- df %>%
  group_by(id) %>%
  mutate(newvariable = ifelse(row_number() == n(), 1, 0)) %>%
  ungroup()
  • group_by(id):按id分组,确保只在每个id的范围内判断序列终止
  • row_number():返回当前组内的行序号
  • n():返回当前组的总行数
  • ifelse判断:如果是组内最后一行则赋值1,否则赋值0

方法二:使用基础R(无需额外安装包)

# 标记每组最后一行(逻辑值转数字)
df$newvariable <- as.integer(with(df, ave(lengthofstay, id, FUN = function(x) seq_along(x) == length(x))))
  • ave():按id分组执行自定义函数
  • seq_along(x) == length(x):判断当前行是否为组内最后一行,返回逻辑值后转成0/1数字

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 05:42:33