r计算变量组合的连续实例

时间:2014-07-24 09:50:11

标签: r count sequence

我需要在2个变量的组合中枚举变量组合的连续实例。在一个变量(Id)的子集中,计数变量应该枚举另一个变量(价格)的类似值,并在每次出现niveau变化时前进。

我为此尝试了ave()函数,但无法找到合适的聚合函数以使其按我的意愿工作。

# Id is a factor
df <- data.frame(Id = c(1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2), price = c(10, 20, 20, 20, 10, 10, 10, 10, 20, 10, 10))

   Id price
1   1    10
2   1    20
3   1    20
4   1    20
5   1    10
6   1    10
7   1    10
8   2    10
9   2    20
10  2    10
11  2    10

我的预期输出是

   Id price expected_output
1   1    10               1
2   1    20               2
3   1    20               2
4   1    20               2
5   1    10               3
6   1    10               3
7   1    10               3
8   2    10               1
9   2    20               2
10  2    10               3
11  2    10               3

1 个答案:

答案 0 :(得分:1)

 df$expected_output <- with(df,ave(price,Id,FUN=function(x) 
         cumsum(c(T,x[-1]!=x[-length(x)])) )) 

 df$expected_output 
     #[1] 1 2 2 2 3 3 3 1 2 3 3

或者

library(dplyr)
df%>%
group_by(Id) %>% 
mutate(expected_output= cumsum(c(T,diff(price)!=0)))