R Studio - группировка по данным и получение статистики с помощью dplyr - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть фрейм данных:

enter image description here

Я хочу сгруппировать по "ID" и "direction", затем получить статистику для "value" , Самым сложным для меня является то, что для столбца «категория» мне нужно всегда выводить последнюю «категорию» в группе «ID», как показано на рисунке.

У меня есть код, но результат не желателен. Может кто-нибудь, пожалуйста, помогите мне изменить существующий код? Спасибо за ваше время!

ID        <- c(1,1,1,2,2,2,3,3)
category  <- c("green", "green", "red", "red","green", "green", "yellow", "yellow")
direction <- c("in", "out","in", "out","in", "out","in", "out")
value     <- c(4,5,6,7,8,9,10,11)
df        <- data.frame(ID, category, direction, value)

res <- df %>% 
  group_by(ID,direction) %>% 
  arrange(ID, direction)%>%
  summarize(
    category    = last(category),
    sum_value   = sum(value),
    count_value = length(value)
  )

1 Ответ

1 голос
/ 18 апреля 2020

Ты почти у цели. Просто ваша «последняя (категория)» группировка основана только на ID, а не на ID и направлении. Если вы измените его на:

res <- df %>%
  group_by(ID) %>% 
  mutate(category = last(category)) %>% 
  ungroup %>% 
  group_by(ID, direction, category) %>% 
  summarise(
    sum_value = sum(value),
    count_value = length(value)
  ) %>% 
  ungroup

Это должно сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...