【发布时间】:2015-03-31 18:47:10
【问题描述】:
我有一个data_frame,其中一个字符变量x 随时间变化。我想计算它改变的次数,并用这个计数填充一个新的向量。
df <- data_frame(
x = c("a", "a", "b", "b", "c", "b"),
wanted = c(1, 1, 2, 2, 3, 4)
)
x wanted
1 a 1
2 a 1
3 b 2
4 b 2
5 c 3
6 b 4
这与rle(df$x) 相似但不同,后者将返回
Run Length Encoding
lengths: int [1:4] 2 2 1 1
values : chr [1:4] "a" "b" "c" "b"
我可以尝试rep() 那个输出。我也试过这个,非常接近,但不是因为我无法立即弄清楚的原因:
df %>% mutate(
try_1 = cumsum(ifelse(x == lead(x) | is.na(lead(x)), 1, 0))
)
Source: local data frame [6 x 3]
x wanted try_1
1 a 1 1
2 a 1 1
3 b 2 2
4 b 2 2
5 c 3 2
6 b 4 3
似乎应该有一个直接执行此操作的函数,我只是在我的经验中没有发现。
【问题讨论】: