1

I currently have similar dataframe:

Year   CH   US   EU
1990   10   15   12
2000   13   18   15
2010   20   22   19
2020   26   27   22

And I need a code to rearrange data frame dimensions to obtain this:

Year  Region  Value
1990    CH      10
1990    US      15
1990    EU      12
2000    CH      13
2000    US      18
2000    EU      15
2010    CH      20
2010    US      22
2010    EU      19
2020    CH      26
2020    US      27
2020    EU      22

And another code to do it vice versa

AdrianGRB
  • 21
  • 2

1 Answers1

0

You can use pivot_longer from tidyr:

library(tidyr)

df
#>   Year CH US EU
#> 1 1990 10 15 12
#> 2 2000 13 18 15
#> 3 2010 20 22 19
#> 4 2020 26 27 22

df2 <- pivot_longer(df, 2:4, names_to = "Region")
df2
#> # A tibble: 12 x 3
#>     Year Region value
#>    <int> <chr>  <int>
#>  1  1990 CH        10
#>  2  1990 US        15
#>  3  1990 EU        12
#>  4  2000 CH        13
#>  5  2000 US        18
#>  6  2000 EU        15
#>  7  2010 CH        20
#>  8  2010 US        22
#>  9  2010 EU        19
#> 10  2020 CH        26
#> 11  2020 US        27
#> 12  2020 EU        22

And you can reverse it with pivot_wider:

pivot_wider(df2, names_from = Region)
#> # A tibble: 4 x 4
#>    Year    CH    US    EU
#>   <int> <int> <int> <int>
#> 1  1990    10    15    12
#> 2  2000    13    18    15
#> 3  2010    20    22    19
#> 4  2020    26    27    22
Allan Cameron
  • 147,086
  • 7
  • 49
  • 87