重组数据框

时间:2020-03-18 14:56:58

标签: r dataframe tidyverse

我有以下数据框:

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 个答案:

答案 0 :(得分:1)

您的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

reprex package(v0.2.1)于2020-03-18创建