如何转换数据table?

How to transform a data table?

我是 R 的新手,我有如下数据 table (df):

id   month   year   count
___  _____   ____   ______
1     1      2017     12
1     2      2017     10
1     3      2017     13
2     1      2017     9
2     2      2017     18
2     3      2017     13
3     1      2017     12
3     2      2017     10
3     3      2017     10

据此,我想按照如下所示的格式将数据框从长改成宽

id      1      2      3 
___     __    ___    ___
1       12     10     13
2       9      18     13
3       12     10     10

我尝试了 melt(df)。但抛出一个 error.Any 帮助是值得赞赏的。

您可以使用 tidyr 包中的 spread,它是 tidyverse 的一部分。

library(tidyverse)
df <- read_table("id   month   year   count
1     1      2017     12
1     2      2017     10
1     3      2017     13
2     1      2017     9
2     2      2017     18
2     3      2017     13
3     1      2017     12
3     2      2017     10
3     3      2017     10")

df %>% spread(month, count)
#> # A tibble: 3 x 5
#>      id  year   `1`   `2`   `3`
#> * <int> <int> <int> <int> <int>
#> 1     1  2017    12    10    13
#> 2     2  2017     9    18    13
#> 3     3  2017    12    10    10