0
我曾經使用過一個非常方便的r
函數,該函數可以返回一個向量,該向量的值在另一個變量的每次更改時遞增。 這裏將是我的輸入data.frame
,用下面的代碼生成:確定向量中值的更改
set.seed(0) data.frame(Day=seq(as.Date("2016-10-01"),as.Date("2016-10-10"),by="day"), bit=sample(c(0,1),size=10,replace=TRUE))
Day bit
2016-10-01 1
2016-10-02 0
2016-10-03 0
2016-10-04 1
2016-10-05 1
2016-10-06 0
2016-10-07 1
2016-10-08 1
2016-10-09 1
2016-10-10 1
我將需要額外的列bit.change
Day bit bit.change
2016-10-01 1 1
2016-10-02 0 2
2016-10-03 0 2
2016-10-04 1 3
2016-10-05 1 3
2016-10-06 0 4
2016-10-07 1 5
2016-10-08 1 5
2016-10-09 1 5
2016-10-10 1 5
我有比較bit
其滯後價值的解決方案但它並不優雅。 有人知道我的功能嗎? 如果可能,它應該與dplyr::mutate()
和dplyr::group_by()
一起使用。如果指定group_by()
,則bit.change
應從每個新組的1
再次開始。 Thx很多爲您的幫助!
查看'data.table'中的'rleid()'就可以得到一個這樣的實現。我敢肯定這是一個重複的問題,但'cumsum(abs(c(1,diff(df $ bit))))'也會在基數R中做到。 – thelatemail
Thx。 'rleid()'是我一直在尋找的東西。 Thx也提供'cumsum()'的替代建議 – Vincent