如何继续计算圈数

时间:2017-05-14 18:07:36

标签: r loops count lag

我有一个简单的问题,遗憾的是我似乎无法做对(对R来说很新)。 我有一个表示圈数的变量。经过一段时间后,重新计算了一次,但我想让它继续计算。

根据我的研究,我可能需要一个循环才能做到这一点,但我似乎无法让它工作。

有人可以帮助我吗?

提前多多感谢!

以下是一个示例数据集和预期结果:

dataset <- data.frame(lap = c(1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,1,1,1,2,2,2,2,3,3,3,1,1,1,2,2,2,2))

expected outcome<-data.frame(lap = c(1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,6,6,6,6,7,7,7,8,8,8,9,9,9,9))

2 个答案:

答案 0 :(得分:0)

您可以使用rle计算每个重复数字的次数,然后使用rep重新构建值。

lap <- c(1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,1,1,1,2,2,2,2,3,3,3,1,1,1,2,2,2,2)
rle_lap <- rle(lap)
expected <- data.frame(lap = rep(1:length(rle_lap$lengths), rle_lap$lengths))

答案 1 :(得分:0)

您也可以使用dplyr

执行此操作
 library(dplyr)
 dataset %>% mutate(expected = cumsum(lap != dplyr::lag(lap, 1, default = 0)))