library(dplyr)
を使用して、以前に発生した値の出現を数えたいと思います。IDで前回のIDを日付別に数える方法は?
例データ:
それは、過去に発生した場合、私はIDに1を追加 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
:
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
私は次のようになり、データセットを構築したいと思います。
これまでは重複を使用して解決しようとしました。ただし、出力は非常に有望に見えるdoesntの:dplyr
で
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
dplyr::row_number()
'AVE(seq_along(データ$ ID)、データ$ ID、FUN = seq_along)を使用してこれを試してみてください' –イムは、申し訳ありませんが、私はちょうど私がの順序をregadringミスを犯す実現します時系列 – Mamba
@ d.bという編集を行うだけです。出力はまさにそのようになります。ありがとうございました!それを 'dplyr'パイプとmutateステートメントに統合することは可能でしょうか? – Mamba