-1

I have data something like this.

new_death beds_covid beds_noncrit beds_icu_covid icu_covid vent_covid hosp_covid
0 434 1408 10 0 0 18
1 143 1183 16 2 1 46
2 280 1424 20 1 1 78

I want to change the table into something like this.

new_death variable value
0 beds_covid 434
0 beds_noncrit 1408
0 beds_icu_covid 10
0 icu_covid 0
0 vent_covid 0
0 hosp_covid 18
1 beds_covid 143
1 beds_noncrit 1183
1 beds_icu_covid 16
1 icu_covid 2
1 vent_covid 1
1 hosp_covid 46

Thank you.

  • This is a very frequently asked R question. I like `tidyr::pivot_longer(df1, new_death)` but you'll see there are a variety of approaches you can use in R. See https://stackoverflow.com/questions/2185252/reshaping-data-frame-from-wide-to-long-format for a good survey of these. – Jon Spring Sep 02 '21 at 07:03

1 Answers1

-1

use reshape2::melt function

df %>%
  melt(id.vars = 'new_death')

#>       new_death       variable value
#>    1          0     beds_covid   434
#>    2          1     beds_covid   143
#>    3          2     beds_covid   280
#>    4          0   beds_noncrit  1408
#>    5          1   beds_noncrit  1183
#>    6          2   beds_noncrit  1424
#>    7          0 beds_icu_covid    10
#>    8          1 beds_icu_covid    16
#>    9          2 beds_icu_covid    20
#>    10         0      icu_covid     0
#>    11         1      icu_covid     2
#>    12         2      icu_covid     1
#>    13         0     vent_covid     0
#>    14         1     vent_covid     1
#>    15         2     vent_covid     1
#>    16         0     hosp_covid    18
#>    17         1     hosp_covid    46
#>    18         2     hosp_covid    78
UseR10085
  • 7,120
  • 3
  • 24
  • 54
Park
  • 14,771
  • 6
  • 10
  • 29