从包含一列的data.frame对象开始:
id <- c(1, 1, 1, 2, 3, 3 , 1, 1, 2, 2, 2, 3, 1, 2, 3, 3, 3, 1, 2, 3, 4, 5, 5, 5)
id <- as.data.frame(id)
我的输出:每个整数序列以1开头,包含2个或更多单个/重复整数:
id
1 # First sequence on integers
1
1
2
3
3
1 # second sequence on integers
1
2
2
2
3
1 # third sequence on integers
2
3
3
3
1 # fourth sequence on integers
2
3
4
5
5
5
预期结果: 我想重新编码我的价值观。
id2
1
1
1
2
3
3
4
4
5
5
5
6
7
8
9
9
9
10
11
12
13
14
14
14
我正在尝试使用group_by
r包中的ungroup
/ dplyr
动词。
以下是考虑的方法:
library(dplyr)
id2 <- id %>%
group_by(id) %>%
mutate id2 = %>% # needing some help !
ungroup %>%
select(2)
答案 0 :(得分:3)
我们可以使用rleid
data.frame(id2 = data.table::rleid(id$id))
或rle
base R
inverse.rle(within.list(rle(id$id), values <- seq_along(values)))