Как подготовить данные для мультиплотинга на R? (переставить, объединить и изменить столбцы в новую таблицу, готовую к печати) - PullRequest
0 голосов
/ 05 апреля 2020

Я новичок ie, испытывающий затруднения в построении графика / графика. Заранее извиняюсь за использование странных / неправильных терминов. Я работаю над финансированием набора данных по искусству. Моя текущая таблица выглядит следующим образом (для этого примера составлены номера бюджета)

Category   2010/11   2011/12   2012/13   ...   Total
Music      10000     900000000 8900000         98000000000
Dance      0         8759432   0               789999999
Theatre    7800000   23535352  32424           94832000
  1. Элемент списка

Я хочу создать новый набор данных, который включает в себя все данные, выглядит (что-то), как показано ниже.

Category      Year       Budget
Music         2010/11    10000
Dance         2011/12    8759432
Theatre       2011/12    23535352

Так что я могу использовать его для построения мультибарплота / графика, показывающего различные распределения фонда по различным категориям в разных лет.

Спасибо.

1 Ответ

0 голосов
/ 05 апреля 2020

Вы можете преобразовать свой набор данных через pivot_longer из пакета tidyr. Я также добавил mutate, чтобы получить правильные метки года. Попробуйте это:

library(dplyr)
library(tidyr)

# Example data

df <- read.table(text="Category   2010/11   2011/12   2012/13   Total
Music      10000     900000000 8900000         98000000000
Dance      0         8759432   0               789999999
Theatre    7800000   23535352  32424           94832000", header = TRUE)
df
#>   Category X2010.11  X2011.12 X2012.13      Total
#> 1    Music    10000 900000000  8900000 9.8000e+10
#> 2    Dance        0   8759432        0 7.9000e+08
#> 3  Theatre  7800000  23535352    32424 9.4832e+07

# Tidy the dataset

df_tidy <- df %>%
  # drop Total. If you need that column: remove the code line
  select(-Total) %>% 
  # Convert to long
  pivot_longer(-Category, names_to = "Year", values_to = "Budget") %>% 
  # Get the labels for the Year right   
  mutate(Year = gsub("^X", "", Year),
         Year = gsub("\\.", "/", Year))
df_tidy
#> # A tibble: 9 x 3
#>   Category Year       Budget
#>   <fct>    <chr>       <int>
#> 1 Music    2010/11     10000
#> 2 Music    2011/12 900000000
#> 3 Music    2012/13   8900000
#> 4 Dance    2010/11         0
#> 5 Dance    2011/12   8759432
#> 6 Dance    2012/13         0
#> 7 Theatre  2010/11   7800000
#> 8 Theatre  2011/12  23535352
#> 9 Theatre  2012/13     32424

Создано в 2020-04-05 пакетом Представить (v0.3.0)

...