R 使用ggplot在条形图上绘制宽格式数据框的错误条形图

R 使用ggplot在条形图上绘制宽格式数据框的错误条形图,r,ggplot2,bar-chart,errorbar,R,Ggplot2,Bar Chart,Errorbar,嗨,我想在条形图上画一个错误条。问题是,由于我的数据帧格式很宽,我无法绘制它。数据框如下所示: structure(list(Insured_Age_Group = c(1, 2, 3, 4, 5, 6, 7), Policy_Status = c("Issuance", "Issuance", "Issuance", "Issuance", "Issuance", "Issuance

嗨,我想在条形图上画一个错误条。问题是,由于我的数据帧格式很宽,我无法绘制它。数据框如下所示:

structure(list(Insured_Age_Group = c(1, 2, 3, 4, 5, 6, 7), Policy_Status = c("Issuance", 
"Issuance", "Issuance", "Issuance", "Issuance", "Issuance", "Issuance"
), Deposit_mean = c(3859543.73892798, 4013324.11384503, 3970469.37408863, 
4405204.3601121, 4379252.01763646, 3816234.23370925, 3342252.39385489
), Deposit_n = c(31046L, 20039L, 20399L, 48677L, 30045L, 13947L, 
3157L), Deposit_sd = c(2816342.35213949, 3016203.31909278, 3292567.51598225, 
4345771.64693777, 4260381.02418456, 4748349.50958046, 4033440.60986956
), se_Deposit = c(31328.4343156912, 41761.74740604, 45184.1713046368, 
38606.556913894, 48174.6323355127, 78805.8303265365, 140700.113248691
), Insurance_mean = c(1962975.48419977, 2003323.06714903, 2665058.97077804, 
3033051.58298144, 3579542.94373979, 4338039.6868955, 4806849.35326484
), Insurance_n = c(31046L, 20039L, 20399L, 48677L, 30045L, 13947L, 
3157L), Insurance_sd = c(1187550.43329336, 1065410.12671512, 
1840293.78284101, 2248320.36787743, 2642040.82537531, 3128969.83541335, 
3030600.81901732), se_Insurance = c(13210.075727384, 14751.455352518, 
25254.5009726065, 19973.4167588603, 29875.1085068105, 51929.8475078389, 
105717.653906674)), row.names = c(NA, -7L), groups = structure(list(
    Insured_Age_Group = c(1, 2, 3, 4, 5, 6, 7), .rows = structure(list(
        1L, 2L, 3L, 4L, 5L, 6L, 7L), ptype = integer(0), class = c("vctrs_list_of", 
    "vctrs_vctr", "list"))), row.names = c(NA, 7L), class = c("tbl_df", 
"tbl", "data.frame"), .drop = TRUE), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"))

  Insured_Age_Group Policy_Status Deposit_mean Deposit_n Deposit_sd se_Deposit Insurance_mean Insurance_n Insurance_sd se_Insurance
              <dbl> <chr>                <dbl>     <int>      <dbl>      <dbl>          <dbl>       <int>        <dbl>        <dbl>
1                 1 Issuance          3859544.     31046   2816342.     31328.       1962975.       31046     1187550.       13210.
2                 2 Issuance          4013324.     20039   3016203.     41762.       2003323.       20039     1065410.       14751.
3                 3 Issuance          3970469.     20399   3292568.     45184.       2665059.       20399     1840294.       25255.
4                 4 Issuance          4405204.     48677   4345772.     38607.       3033052.       48677     2248320.       19973.
5                 5 Issuance          4379252.     30045   4260381.     48175.       3579543.       30045     2642041.       29875.
6                 6 Issuance          3816234.     13947   4748350.     78806.       4338040.       13947     3128970.       51930.
7                 7 Issuance          3342252.      3157   4033441.    140700.       4806849.        3157     3030601.      105718.
结构(列表(投保年龄组=c(1,2,3,4,5,6,7),保单状态=c(“签发”),
“发行”、“发行”、“发行”、“发行”、“发行”、“发行”
),存款平均数=c(3859543.738927984013324.113845033970469.37408863,
4405204.3601121, 4379252.01763646, 3816234.23370925, 3342252.39385489
),存款=c(31046L,20039L,20399L,48677L,30045L,13947L,
存款额=c(2816342.35213949、3016203.31909278、3292567.51598225、,
4345771.64693777, 4260381.02418456, 4748349.50958046, 4033440.60986956
),硒矿床=c(31328.434315691241761.7474060445184.1713046368,
38606.556913894, 48174.6323355127, 78805.8303265365, 140700.113248691
),保险平均值=c(1962975.484199772003323.067149032665058.97077804,
3033051.58298144, 3579542.94373979, 4338039.6868955, 4806849.35326484
),保险费=c(31046L,20039L,20399L,48677L,30045L,13947L,
保险标准差=c(1187550.433293361065410.12671512,
1840293.78284101, 2248320.36787743, 2642040.82537531, 3128969.83541335, 
(13210.07572738414751.455352518,
25254.5009726065, 19973.4167588603, 29875.1085068105, 51929.8475078389, 
105717.653906674),row.names=c(NA,-7L),groups=structure(list(
被保险人年龄组=c(1,2,3,4,5,6,7),行=结构(列表(
1L,2L,3L,4L,5L,6L,7L),ptype=integer(0),class=c(“vctrs列表”,
“vctrs_vctr”,“list”)),row.names=c(NA,7L),class=c(“tbl_df”,
“tbl”,“data.frame”),.drop=TRUE),class=c(“分组的”,
“tbl_df”、“tbl”、“data.frame”))
被保险人年龄组保单状态存款指存款、存款、储蓄保险指保险
1发行3859544。31046   2816342.     31328196297531046     1187550.       13210
2发行4013324。20039   3016203.     41762200332320039     1065410.       14751
3发行3970469。20399   3292568.     45184266505920399     1840294.       25255
4发行4405204。48677   4345772.     38607303305248677     2248320.       19973
5发行4379252。30045   4260381.     48175357954330045     2642041.       29875
6发行3816234。13947   4748350.     78806433804013947     3128970.       51930
7 7发行3342252。3157   4033441.    14070048068493157     3030601.      105718
可以看出,对于存款保险的每个值,我已经计算了se存款se保险(标准误差)。我绘制了如下所示的平均值图:

我知道如何使用
geom_errorbar
添加错误条,但是,我不确定如何为每个条形图添加相应的se值,因为它们的格式很宽。因此,基本上,我必须以某种方式将宽格式更改为长格式,在每个计算的存款_平均值保险_平均值前面,我有相应的标准误差


有什么帮助或建议吗?

我想我应该先将数据转为长格式,然后再转回到另一种宽格式,从而重塑数据:

库(dplyr)
图书馆(tidyr)
图书馆(GG2)
df2%
重命名(保险seu=seu保险,存款seu=seu存款)%>%
轴长(-c(1:2),名称_sep=“”,名称_to=c(“类型”,“度量”))%>%
枢轴(名称从=度量,值从=值)
这将为您提供以下格式的数据:

df2
#>#A tibble:14 x 7
#>#群体:投保人(年龄)群体[7]
#>投保人\年龄\团体保单\状态类型平均值n sd se
#>                                          
#>1发行保证金3859544。31046 2816342.  31328
#>2 1发行保险1962975。31046 1187550.  13210
#>3.2发行保证金4013324。20039 3016203.  41762
#>4.2发行保险2003323。20039 1065410.  14751
#>5.3发行保证金3970469。20399 3292568.  45184
#>6.3发行保险2665059。20399 1840294.  25255
#>7.4发行保证金4405204。48677 4345772.  38607
#>8.4发行保险3033052。48677 2248320.  19973
#>9.5发行保证金4379252。30045 4260381.  48175
#>10.5发行保险3579543。30045 2642041.  29875
#>11.6发行保证金3816234。13947 4748350.  78806
#>12.6发行保险4338040。13947 3128970.  51930
#>13.7发行保证金3342252。3157 4033441. 140700
#>14.7发行保险4806849。3157 3030601. 105718
然后,您可以添加错误栏和所需的任何风格调整:

ggplot(df2,aes(系数(投保年龄组),平均值,填充=类型))+
几何坐标(位置=位置减淡(宽度=0.8),宽度=0.6)+
几何误差条(aes(ymin=平均值-1.96*se,ymax=平均值+1.96*se),
宽度=0.4,
位置=位置\减淡(宽度=0.8),尺寸=1)+
几何图形文本(aes(标签=刻度::美元(平均值),y=平均值/2),hjust=0.5,
角度=90,位置=position_道奇(宽度=0.8))+
缩放y连续(标签=缩放::玩偶