Mam następujące dane:dplyr + group_by i uniknąć alfabetyczne sortowanie
data <- structure(list(user = c(1234L, 1234L, 1234L, 1234L, 1234L, 1234L,
1234L, 1234L, 1234L, 1234L, 1234L, 4758L, 4758L, 9584L, 9584L,
9584L, 9584L, 9584L, 9584L), time = c(1L, 2L, 3L, 4L, 5L, 6L,
7L, 8L, 9L, 10L, 11L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L), fruit = structure(c(1L,
6L, 1L, 1L, 6L, 5L, 5L, 3L, 4L, 1L, 2L, 4L, 2L, 1L, 6L, 5L, 5L,
3L, 2L), .Label = c("apple", "banana", "lemon", "lime", "orange",
"pear"), class = "factor"), count = c(1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), cum_sum = c(1L,
2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 1L, 2L, 1L, 2L, 3L,
4L, 5L, 6L)), .Names = c("user", "time", "fruit", "count", "cum_sum"
), row.names = c(NA, -19L), class = "data.frame")
dla każdego użytkownika w tym zestawie, chcę patrzeć na sekwencji owoców w czasie. Ale niektóre owoce są wymienione "z powrotem do tyłu" na czas.
user time fruit count cum_sum
1 1234 1 apple 1 1
2 1234 2 pear 1 2
3 1234 3 apple 1 3
4 1234 4 apple 1 4
5 1234 5 pear 1 5
6 1234 6 orange 1 6
7 1234 7 orange 1 7
Co szukam jest bardziej szeregów czasowych przez użytkownika poprzez unikalnej owoców.
Problem jest, jeśli grupa przez użytkownika i owoców następnie podsumować dplyr automatycznie sortuje owoce alfabetycznie:
data %>%
group_by(user, fruit) %>%
summarise(temp_var=1) %>%
mutate(cum_sum = cumsum(temp_var))
Co ja naprawdę chcę to dla użytkownika 1234 powyżej (na przykład) na owoce być wymienione w kolejności szeregów czasowych, ale usuwając wszelkie duplikaty. Więc gdzie widzimy Apple> gruszka> Apple> Apple> gruszka> pomarańczy> pomarańcza, byśmy tylko zamiast zobaczyć Apple>>> Apple gruszka gruszka> pomarańczowy
Twoje 'dput' nie działa, ponieważ ma' vars = list (user) ', a my nie mamy' user'. – Frank
woops, przepraszam za to - naprawiono dput –
Twoje pożądane wyjście modyfikuje 'czas' gruszki z' 5' na '4' – Frank