我是一个新手,很难绘制多条形图。提前为使用怪异/错误的术语道歉。我正在为艺术基金数据集工作。我当前的表格如下所示(预算数字是为这个例子准备的(
Category 2010/11 2011/12 2012/13 ... Total
Music 10000 900000000 8900000 98000000000
Dance 0 8759432 0 789999999
Theatre 7800000 23535352 32424 94832000
- 列表项
我想创建一个新的数据集,其中包括如下所示的所有数据
Category Year Budget
Music 2010/11 10000
Dance 2011/12 8759432
Theatre 2011/12 23535352
这样我就可以用它绘制一个多条形图/图表,显示不同年份不同类别的资金分配情况。
谢谢。
您可以通过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
由reprex包(v0.3.0(于2020-04-05创建