通过零/空值后的组重置来获取行ID

时间:2019-02-08 17:20:56

标签: r

我正在尝试根据值列将一些混乱的时间序列数据分组在一起-本质上,我正在尝试创建将产生列targetid的函数-也就是说,数据集按{分组{1}},并且每当非零值再次开始时,都会创建一个新ID。

id

这个answer可能是我能找到的最接近的数字(由于id会重置每个非零值,因此无效。

1 个答案:

答案 0 :(得分:0)

我想针对我的特定问题发布答案:

library(dplyr)
a2 <- a %>%
  group_by(id) %>%
  mutate(next.valuecolumn = lag(valuecolumn),
         next.valuecolumn2 = coalesce(next.valuecolumn, valuecolumn),
         diff = ifelse(valuecolumn > 0 & next.valuecolumn2 == 0, 1, 0),
         target2 = cumsum(diff)+1)

行ID不会“重置”,但这不是问题所必需的,因为我可以按user_id-target分组以按ID对值求和。