如何转换数据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
我是 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