我有一个简单的问题,遗憾的是我似乎无法做对(对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))
答案 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)))