我有几个列的数据框我需要重新组合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万。
答案 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))