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

R语言使用row_number()时跳过特定观测值的实现方法

解决方案

你可以直接用cumsum()函数实现需求,不需要用到ifelse或者next类逻辑,修改后的代码如下:

df1 <- data%>%
  arrange(Var1, Var2, Var3, Var4, Var5)%>%
  group_by(Var1)%>%
  distinct(Var1, Var2, Var3, Var4, Var5)%>%
  mutate(Var6 = cumsum(Var4 == "COMPLETE"))

逻辑说明

  • Var4 == "COMPLETE"会返回逻辑值,匹配成功为TRUE(等价于数值1),匹配失败为FALSE(等价于数值0)
  • cumsum()是累积求和函数,每次遇到COMPLETE行就加1,遇到INCOMPLETE行数值不变,刚好实现:
    • INCOMPLETE行和其下方紧邻的COMPLETE行序号一致
    • 序号完全连续无跳号
    • 自动按你之前的group_by(Var1)分组计算每个组内的独立序号

运行上述代码得到的输出和你给出的预期结果完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:45:03