我有一个看起来像这样的data.frame:
df <- data.frame(names=c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K"),
values=c(1,1,4,6,7,7,7,9,9,14,15))
Run Code Online (Sandbox Code Playgroud)
我想要类似的东西:
df <- data.frame(names=c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K"),
values=c(1,1,2,3,4,4,4,5,5,6,7))
Run Code Online (Sandbox Code Playgroud)
我知道这是一个愚蠢的问题,但我不知道该怎么做.谢谢
注意:第二个data.frame中的值应该是从1到n的顺序
你可以使用cumsum:
df <- transform(df, values = cumsum(c(1, head(values, -1) != tail(values, -1))))
Run Code Online (Sandbox Code Playgroud)
另一个版本可能更容易理解,但我猜想会慢一点:
df<- transform(df, values = cumsum(c(1, diff(values) != 0))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |