2017-05-14 60 views
0

我有一個簡單的問題,我不幸似乎無法得到正確的答案(對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

您可以使用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)) 
+0

感謝那些偉大工程!很高興有這樣的幫助;不知道這個功能,所以也從來沒想過要找這個! –

0

您還可以使用dplyr做到這一點:

library(dplyr) 
dataset %>% mutate(expected = cumsum(lap != dplyr::lag(lap, 1, default = 0)))