Реструктуризация Dataframe - PullRequest
0 голосов
/ 18 марта 2020

У меня есть следующий фрейм данных:

grp       dates  count
A    2018-01-01     10
A    2018-01-02     20
A    2018-01-03     25
A    2018-01-04     30
B    2018-01-03     10
B    2018-01-04     30
...

Однако мне бы хотелось, чтобы он был в этой форме:

dates        A   B ...
2018-01-01  10  NA
2018-01-02  20  NA
2018-01-03  25  10
2018-01-04  30  30

Какой самый простой способ преобразовать его? И какая форма лучше?

grp <- c("A", "A", "A", "A", "B", "B")
count <- c(10, 20, 25, 30, 10, 30)
dates <- c("2018-01-01", "2018-01-02", "2018-01-03", "2018-01-04", "2018-01-03", "2018-01-04")

df <- data.frame(grp, count, dates)
df

1 Ответ

1 голос
/ 18 марта 2020

Ваш dates вектор отличается от примера данных вашего шоу тем, что он имеет дублированную дату 2018-01-01. Предполагая, что это ошибка, вы можете сделать следующее:

grp <- c("A", "A", "A", "A", "B", "B")
count <- c(10, 20, 25, 30, 10, 30)
dates <- c("2018-01-01", "2018-01-02", "2018-01-03", "2018-01-04", "2018-01-03", "2018-01-04")

df <- data.frame(grp, count, dates)

library(tidyr)
df %>% pivot_wider(names_from = grp, values_from = count)
#> # A tibble: 4 x 3
#>   dates          A     B
#>   <fct>      <dbl> <dbl>
#> 1 2018-01-01    10    NA
#> 2 2018-01-02    20    NA
#> 3 2018-01-03    25    10
#> 4 2018-01-04    30    30

Создано в 2020-03-18 пакетом Представить (v0.2.1)

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