我需要在 R 中创建堆积条形图吗?但是 R 没有正确读取我的代码?任何建议请

I need to create a stacked bar chart in R? However R is not reading my code correctly? Any advise please

我附上了调查问题样本数据的图片!我需要创建一个堆积条形图,它在 x 轴上显示人们希望从雇主那里获得的属性。即灵活性、认可度、国际机会等……在 Y 轴上,它具有这些属性中每一个的频率。最后,我希望将功能分组在条形图中。

由于数据的格式化方式,我不确定从哪里开始。但我相信我首先需要创建一个 table,它计算每个属性的响应并按功能对它们进行分组。我希望 table 然后我可以创建一个堆积条形图!请提供任何建议或建议。

这是一种适合您的方法,但首先让我以更加用户友好的方式分享您的数据集:

df <- data.frame(
  ID=1:14,
  Flexibility=c(1,0,0,0,0,1,1,0,1,1,0,1,0,1),
  Recognition=c(0,1,1,0,0,0,0,1,0,0,0,1,1,0),
  International_opportunities=c(1,0,0,1,0,0,0,1,0,0,1,0,0,0),
  Autonomy=c(0,0,0,1,0,0,0,0,0,1,1,0,0,0),
  Status=c(0,0,1,0,0,0,0,0,1,0,1,0,0,1),
  Training_Qual=c(1,0,1,0,1,1,1,0,1,1,0,0,1,0),
  Function=c('Technology','Technology','Security','HR','Customer Operations','Technology','Customer Operations','Commercial','Technology','Strategy/Transformation','HR','Technology','HR','Security')
)

OP:以后您可以使用dput(df)创建一个文本,可以直接复制粘贴到您的问题中,以允许其他人重新创建您的数据。

第一步是 assemble 将您的数据转换为更 Tidy Data 友好的格式。每列应代表一个变量,每行包含该变量的一个 value/observation。查看您的数据集,您可以看到“属性”的变量设置为列名,“频率”分布在这些列上。您可以使用多种技术将列聚集在一起,但我将向您展示一种使用 tidyverse:

中的 dplyrtidyr 包的方法
library(dplyr)
library(tidyr)
library(ggplot2)

df <- df %>%
  gather(key='Attributes',value='freq',-c(ID,Function))

这会生成一个新数据集 df,其中包含以下 4 列:“ID”(未更改)、“Attributes”(原始数据集中的列名称)、“freq”(那些 1 的和 0's)和“函数”(未更改)。

剧情

然后您可以按如下方式创建堆积柱形图。从您的描述中并不能 100% 清楚您正在寻找的情节,但这里有一种显示数据和代码中包含的注释的方法,以帮助您了解每个部分在最终输出中的作用:

# setup the plot and general aesthetics
ggplot(df, aes(x=Attributes, y=freq, fill=Function)) +
  
  # the only data geom
  geom_col(position='stack', width=0.8, alpha=0.7) +
  
  # I like these colors, but you can use default if you want
  scale_fill_viridis_d() +
  
  # ensure the bottom of the bars touches the axis
  scale_y_continuous(expand=expansion(mult=c(0,0.05)))+
  
  # theme elements
  theme_bw() +
  theme(
    axis.text.x = element_text(angle=30, hjust=1)
  )