如何为R上的多条形图准备数据?(将列重新排列、合并并更改为可打印的新表)



我是一个新手,很难绘制多条形图。提前为使用怪异/错误的术语道歉。我正在为艺术基金数据集工作。我当前的表格如下所示(预算数字是为这个例子准备的(

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

这样我就可以用它绘制一个多条形图/图表,显示不同年份不同类别的资金分配情况。

谢谢。

您可以通过pivot_longertidyr包转换数据集。我还添加了一个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

由reprex包(v0.3.0(于2020-04-05创建

最新更新