R - сгруппировать по дате и посчитать разные вхождения значения за каждый день - PullRequest
0 голосов
/ 12 октября 2018

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

Title         Date             Priority
title1        2018-09-03       3 Mid
title2        2018-09-03       3 Mid
title3        2018-09-03       3 Mid
title4        2018-09-03       4 High
title5        2018-09-03       3 Mid
title6        2018-09-03       3 Mid
title7        2018-09-03       3 Mid
title8        2018-09-03       2 Min
title9        2018-09-03       3 Mid
title10       2018-09-03       3 Mid
title11       2018-09-03       4 High
title12       2018-09-04       3 Mid
title13       2018-09-04       3 Mid
title14       2018-09-04       3 Mid
title15       2018-09-04       3 Mid
title16       2018-09-04       3 Mid
title17       2018-09-04       2 Min
title18       2018-09-04       3 Mid
title19       2018-09-04       4 High
title20       2018-09-04       4 High
title21       2018-09-04       3 Mid
title22       2018-09-04       4 High
title23       2018-09-04       3 Mid
title24       2018-09-04       3 Mid
title25       2018-09-04       3 Mid
title26       2018-09-04       2 Min
title27       2018-09-04       1 Low
title28       2018-09-04       3 Mid
title29       2018-09-05       4 High
title30       2018-09-05       4 High
title31       2018-09-05       3 Mid
title32       2018-09-05       3 Mid
title33       2018-09-05       3 Mid
title34       2018-09-05       3 Mid
title35       2018-09-05       3 Mid
title36       2018-09-05       3 Mid
title37       2018-09-05       3 Mid

, и я бы хотел посчитать количество приоритетных вхождений по дням.

В выводе я хотел бы получить что-товот так:

Date         1 Low   2 Min   3 Mid   4 High   5 Critical
2018-09-03   0       1       8       2        0
2018-09-04   1       2       11      3        0
2018-09-05   0       1       10      3        0

Возможно ли это сделать с помощью R?Я уже пытался найти решение, но не нашел подходящего для моего случая.

Спасибо всем заранее.

1 Ответ

0 голосов
/ 12 октября 2018

Есть несколько способов сделать это.Столбец 5 Critical появится, если он находится в ваших данных.Все зависит немного от того, что еще вы хотите сделать с вашими данными.

Base R:

table(df1$Date, df1$Priority)
             1 Low 2 Min 3 Mid 4 High
  2018-09-03     0     1     8      2
  2018-09-04     1     2    11      3
  2018-09-05     0     0     7      2

tidyverse: С одной стороны, есть больше способов добраться до этого результата.

    library(tidyr)
    library(dplyr)

    df1 %>% 
      group_by(Date, Priority) %>%
      summarise(n = n()) %>% 
      spread(Priority, n, fill = 0)

    # A tibble: 3 x 5
    # Groups:   Date [3]
      Date       `1 Low` `2 Min` `3 Mid` `4 High`
      <chr>        <dbl>   <dbl>   <dbl>    <dbl>
    1 2018-09-03       0       1       8        2
    2 2018-09-04       1       2      11        3
    3 2018-09-05       0       0       7        2

данные:

df1 <- structure(list(Title = c("title1", "title2", "title3", "title4", 
"title5", "title6", "title7", "title8", "title9", "title10", 
"title11", "title12", "title13", "title14", "title15", "title16", 
"title17", "title18", "title19", "title20", "title21", "title22", 
"title23", "title24", "title25", "title26", "title27", "title28", 
"title29", "title30", "title31", "title32", "title33", "title34", 
"title35", "title36", "title37"), Date = c("2018-09-03", "2018-09-03", 
"2018-09-03", "2018-09-03", "2018-09-03", "2018-09-03", "2018-09-03", 
"2018-09-03", "2018-09-03", "2018-09-03", "2018-09-03", "2018-09-04", 
"2018-09-04", "2018-09-04", "2018-09-04", "2018-09-04", "2018-09-04", 
"2018-09-04", "2018-09-04", "2018-09-04", "2018-09-04", "2018-09-04", 
"2018-09-04", "2018-09-04", "2018-09-04", "2018-09-04", "2018-09-04", 
"2018-09-04", "2018-09-05", "2018-09-05", "2018-09-05", "2018-09-05", 
"2018-09-05", "2018-09-05", "2018-09-05", "2018-09-05", "2018-09-05"
), Priority = c("3 Mid", "3 Mid", "3 Mid", "4 High", "3 Mid", 
"3 Mid", "3 Mid", "2 Min", "3 Mid", "3 Mid", "4 High", "3 Mid", 
"3 Mid", "3 Mid", "3 Mid", "3 Mid", "2 Min", "3 Mid", "4 High", 
"4 High", "3 Mid", "4 High", "3 Mid", "3 Mid", "3 Mid", "2 Min", 
"1 Low", "3 Mid", "4 High", "4 High", "3 Mid", "3 Mid", "3 Mid", 
"3 Mid", "3 Mid", "3 Mid", "3 Mid")), class = "data.frame", row.names = c(NA, 
-37L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...