按顺序计算R中一列中的相同组

时间:2015-07-09 16:09:05

标签: r aggregate lapply labeling

我有几个列的数据框我需要重新组合col2的序列,以便在标签从a到b或b更改为a后,用新标签分组,你可以在Desired列中看到结果

testdf <- data.frame(mydate = seq(as.Date('2012-01-01'), 
                                  as.Date('2012-01-10'), by = 'day'),
                     col1 = 1:10,
                     col2 = c("a","a","b","b","a","b","a","b","a","a"),
                     Desired= c(1,1,2,2,3,4,5,6,7,7))

       mydate col1 col2 Desired
1  2012-01-01    1    a       1
2  2012-01-02    2    a       1
3  2012-01-03    3    b       2
4  2012-01-04    4    b       2
5  2012-01-05    5    a       3
6  2012-01-06    6    b       4
7  2012-01-07    7    a       5
8  2012-01-08    8    b       6
9  2012-01-09    9    a       7
10 2012-01-10   10    a       7
有没有办法解决这个问题没有FOR循环。因为数据集的行数超过100万。

2 个答案:

答案 0 :(得分:1)

你可以试试这个:

output <- c(0,cumsum(diff(as.numeric(testdf$col2))!=0))+1
#> output
#[1] 1 1 2 2 3 4 5 6 7 7

答案 1 :(得分:1)

这是一种更流行的方式。

testdf %>% group_by(col2) %>% mutate(first = cumsum(as.numeric(col2))