例如,考慮下表:
Group<-c("AGroup", "AGroup", "AGroup", "AGroup", "BGroup", "BGroup", "BGroup", "BGroup", "CGroup", "CGroup", "CGroup", "CGroup")
Status<-c("Low", "Low", "High", "High", "High", "Low", "High", "Low", "Low", "Low", "High", "High")
df<-data.frame(Group, Status)
df$CountByGroup<-c(1, 2, 1, 2, 1, 1, 1, 1, 1, 2, 1, 2)
這將創建下表:
Group Status CountByGroup
AGroup Low 1
AGroup Low 2
AGroup High 1
AGroup High 2
BGroup High 1
BGroup Low 1
BGroup High 1
BGroup Low 1
CGroup Low 1
CGroup Low 2
CGroup High 1
CGroup High 2
CountByGroup 列是我要創建的。在這里你可以看到第一行的“AGroup”到目前為止“Low”出現了一次,所以它的條目是 1。“Low”直接跟在第二行的相同條目“Low”之后,所以它有一個條目 2。如果它在第三行連續第三次出現,則 CountByGroup 將顯示條目 3。
我們還將這些“組”分組,因此新組的第一個條目始終為 1,因為這是該組的任何條目第一次出現。
uj5u.com熱心網友回復:
你可以使用data.table:
library(data.table)
setDT(df)[, CountByGroup := rowid(Group, rleid(Status))]
df
Group Status CountByGroup
1: AGroup Low 1
2: AGroup Low 2
3: AGroup High 1
4: AGroup High 2
5: BGroup High 1
6: BGroup Low 1
7: BGroup High 1
8: BGroup Low 1
9: CGroup Low 1
10: CGroup Low 2
11: CGroup High 1
12: CGroup High 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/534904.html
標籤:r重复序列
上一篇:有序組中的孔
