I would like to count the occurrences of previous occurred values using library(dplyr)
.
Example data:
dates <- as.Date(as.character(c("2011-01-13",
"2011-01-14",
"2011-01-15",
"2011-01-16",
"2011-01-17",
"2011-01-13",
"2011-01-14",
"2011-01-15",
"2011-01-16",
"2011-01-17",
"2011-01-13",
"2011-01-14",
"2011-01-15",
"2011-01-16",
"2011-01-17",
"2011-01-17",
"2011-01-17",
"2011-01-18",
"2011-01-18")))
ID <-c("1","2","3","3","1","5","6","5","7","8","1","2","11","2",'12',"5","5","1","4")
# put together
data <- data.frame(dates,ID)
data
dates ID
1 2011-01-13 1
2 2011-01-14 2
3 2011-01-15 3
4 2011-01-16 3
5 2011-01-17 1
6 2011-01-13 5
7 2011-01-14 6
8 2011-01-15 5
9 2011-01-16 7
10 2011-01-17 8
11 2011-01-13 1
12 2011-01-14 2
13 2011-01-15 11
14 2011-01-16 2
15 2011-01-17 12
16 2011-01-17 5
17 2011-01-17 5
18 2011-01-18 1
19 2011-01-18 4
I would like to construct a dataset which looks like:
dates ID prev_occurene
1 2011-01-13 1 1
2 2011-01-14 2 1
3 2011-01-15 3 1
4 2011-01-16 3 2
5 2011-01-17 1 2
6 2011-01-13 5 1
7 2011-01-14 6 1
8 2011-01-15 5 2
9 2011-01-16 7 1
10 2011-01-17 8 1
11 2011-01-13 1 3
12 2011-01-14 2 2
13 2011-01-15 11 1
14 2011-01-16 2 3
15 2011-01-17 12 1
16 2011-01-17 5 3
17 2011-01-17 5 4
18 2011-01-18 1 4
19 2011-01-18 4 1
where I add 1 to an ID if it has occurred in the past.
So far I have tried to solve that using duplicates. However the output doesnt look very promising:
library(dplyr)
data_dups <- data %>%
group_by(dates) %>%
mutate(dups = duplicated(ID)) %>%
filter(dups == 'TRUE') %>%
summarise(occurence = n())
dates occurence
<date> <int>
1 2011-01-13 1
2 2011-01-14 1
3 2011-01-17 1