在列中第一次出现0后删除组的后续行

我有data.table以下几点:-

data <- data.table(k = c("a", "a", "a", "a", "b", "b", "c", "c", "c", "d"),
               year = c(2011, 2012, 2013, 2014, 2012, 2013, 2014, 2015, 2016, 2001),
               grow_bool = c(1, 1, 0, 1, 0, 1, 1, 0, 1, 0))

#    k year grow_bool
# 1: a 2011         1
# 2: a 2012         1
# 3: a 2013         0
# 4: a 2014         1
# 5: b 2012         0
# 6: b 2013         1
# 7: c 2014         1
# 8: c 2015         0
# 9: c 2016         1
#10: d 2001         0

现在,我想删除列中有 a0grow_bool行以及每个k. 例如:- ain2013有一个0in grow_bool,因此,a应删除所有此行和此行之后的所有行。所有的行都b将被删除,因为第一行b包含一个0. d只有一行,它将被删除,因为它有0

结果data.table应具有以下形式:-

data_2 <- data.table(k = c(a, a, c),
                     year = c(2011, 2012, 2014),
                     grow_bool = c(1, 1, 1))

#    k year grow_bool
# 1: a 2011         1
# 2: a 2012         1
# 3: c 2014         1

提前致谢。

回答

data[!data[, cumsum(grow_bool == 0) > 0, by = .(k)]$V1, ]
#    k year grow_bool
# 1: a 2011         1
# 2: a 2012         1
# 3: c 2014         1


以上是在列中第一次出现0后删除组的后续行的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>