I have a dataframe that has been sorted by userid and date as below:
df <- data.frame(
userid = c("1", "1", "1", "2", "2", "3", "3"),
date = c("2016-10-23", "2018-01-01", "2020-03-03", "2008-09-04", "2021-08-08", "2019-10-02", "2022-01-02")
)
userid date
1 2016-10-23
1 2018-01-01
1 2020-03-03
2 2008-09-04
2 2021-08-08
3 2019-10-02
3 2022-01-02
I want to group by userid and assign row numbers, BUT anything before 2017 should be row number 0:
df2 <- data.frame(
userid = c("1", "1", "1", "2", "2", "3", "3"),
date = c("2016-10-23", "2018-01-01", "2020-03-03", "2008-09-04", "2021-08-08", "2019-10-02", "2022-01-02"),
rownumber = c("0", "1", "2", "0", "1", "1", "2")
)
userid date rownumber
1 2016-10-23 0
1 2018-01-01 1
1 2020-03-03 2
2 2008-09-04 0
2 2021-08-08 1
3 2019-10-02 1
3 2022-01-02 2
As you can see, the dates with years 2016 and 2008 have been assigned as 0 and the rownumber increments from 1 excluding those.
I have tried the below, but it does not assign 0 to dates before 2017.
df %>%
group_by(userid) %>%
mutate(rownumber = row_number()) %>%
ungroup()
Thanks!