I am attempting to keep only deids with multiple observations.
I have the below code
help <- data.frame(deid = c(1, 5, 5, 5, 5, 5, 5, 12, 12, 12,
this should do it - you need to filter by number of observations in each group which is got using n()
:
help %>% group_by(deid) %>% filter(n()>1)
deid session.number days.since.last
1 5 1 0
2 5 2 7
3 5 3 14
4 5 4 93
5 5 5 5
6 5 6 102
7 12 1 0
8 12 2 21
9 12 3 104
10 12 4 4
Using data.table instead:
helpcount <- help[, list(Count = .N), by = deid]
helpf <- merge(help,helpcount, by = "deid")
helpf <- helpf[Count > 1]
EDIT: A bit more concise:
help[, Count := .N, by = deid]
help[Count > 1]
EDIT2: thelatemail's even more concise solution:
help[,if(.N > 1) .SD, by=deid]