我需要在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
答案 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)))