Сбор несколько раз - PullRequest
       0

Сбор несколько раз

0 голосов
/ 28 января 2020

У меня есть набор данных посещаемости отделения неотложной помощи в формате «un», как показано ниже:


Date          T0    T1    T2    T3    T4    T5    T6    T7    T8
   <chr>      <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
 1 01/01/2010     9    13    13    19    14    10    15     7     3
 2 01/01/2011    13    13    10    16    19    11    12     8     7
 3 01/01/2012    12    17    20    12    17    13     6     6     7
 4 01/01/2013    14    15    14    18     8    11     9     3     9
 5 01/01/2014    10    20    17    15    11    14     6     8    13
 6 01/01/2015    12    20    13    13    16     7     6     7    16
 7 01/01/2016     8    19    17    15     8    15    12     7     6
 8 01/01/2017    12    13    17    11    20    10     8     8     9
 9 01/01/2018    13    15    16    18    13    11     8     8     4
10 01/01/2019     5     9    19    15    19    10     7     8    11
# ... with 3,642 more rows, and 15 more variables: T9 <dbl>,
#   T10 <dbl>, T11 <dbl>, T12 <dbl>, T13 <dbl>, T14 <dbl>,
#   T15 <dbl>, T16 <dbl>, T17 <dbl>, T18 <dbl>, T19 <dbl>,
#   T20 <dbl>, T21 <dbl>, T22 <dbl>, T23 <dbl>

T1 - T23 обозначает часы в дне.

В идеале я хотел бы собрать их, но, похоже, функция сбора не позволяет собирать их по нескольким строкам.

Мои идеальные "аккуратные" данные были бы:

Дата | Время | Количество участников


Я пытался применить некоторые ответы на другие вопросы, но подходы, похоже, не работают для меня


После этого я собираюсь переклассифицировать данные и игра с lubridate, но сейчас было бы здорово, если бы я мог получить все это в лучшие столбцы


Любая помощь будет принята с благодарностью

BW, Джек

1 Ответ

0 голосов
/ 28 января 2020

Функция gather из dplyr была заменена на функцию pivot_longer, которая может быть проще для понимания. Я думаю, что решение вашего вопроса может быть следующим:

library(tidyverse)

# In the future, if you supply a copy-pasteable test data like the one just below,
# it becomes much easier for someone to help you with your question :)

df <- tibble(
  date = c("01/01/2010", "01/01/2011", "01/01/2012"),
  T0 = c(1, 2, 3),
  T1 = c(4, 5, 6),
  T2 = c(7, 8, 9),
  T23 = c(10, 11, 12)
)

df 
#> # A tibble: 3 x 5
#>   date          T0    T1    T2   T23
#>   <chr>      <dbl> <dbl> <dbl> <dbl>
#> 1 01/01/2010     1     4     7    10
#> 2 01/01/2011     2     5     8    11
#> 3 01/01/2012     3     6     9    12

df %>% 
  pivot_longer(
    -date, 
    names_to = "time",
    names_prefix = "T",
    names_ptypes = list(time = double()),
    values_to = "n_attendees"
  )
#> # A tibble: 12 x 3
#>    date        time n_attendees
#>    <chr>      <dbl>       <dbl>
#>  1 01/01/2010     0           1
#>  2 01/01/2010     1           4
#>  3 01/01/2010     2           7
#>  4 01/01/2010    23          10
#>  5 01/01/2011     0           2
#>  6 01/01/2011     1           5
#>  7 01/01/2011     2           8
#>  8 01/01/2011    23          11
#>  9 01/01/2012     0           3
#> 10 01/01/2012     1           6
#> 11 01/01/2012     2           9
#> 12 01/01/2012    23          12

Создано в 2020-01-28 пакетом Представить (v0.3.0)

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