0

我觉得我错过了一些非常基本的东西,但任何建议都值得赞赏。

我有一个包含 19 个变量的大型数据集,包括分类变量和数值变量。我想生成一个图,其中三个变量(因为它们共享一个单位)按因子平均和排列。假样本数据:

Sex    Low Freq      High Freq      Bandwidth
M       3000         4011           1011
M       3000         3600           600 
M       2790         4237           1447
F       2700         3300           500
F       2900         4517           617
F       2813         3857           1044

我努力了:

ggplot(TripleSongAverages, aes(x=factor(Sex), y='Low Freq', 'High Freq', 'Bandwidth')) + stat_summary(fun.y="mean", geom="bar") 

但这只会产生带有第一个变量的图。

4

1 回答 1

1

我建议使用tidyverse重塑数据和计算平均值的方法。这里的代码:

library(tidyverse)
#Data
df <- structure(list(Sex = c("M", "M", "M", "F", "F", "F"), Low.Freq = c(3000, 
3000, 2790, 2700, 2900, 2813), High.Freq = c(4011, 3600, 4237, 
3300, 4517, 3857), Bandwidth = c(1011, 600, 1447, 500, 617, 1044
)), class = "data.frame", row.names = c(NA, -6L))

代码:

#Reshape data and plot
df %>% pivot_longer(cols = -Sex) %>%
  group_by(Sex,name) %>%
  summarise(Mean=mean(value,na.rm=T)) %>%
  #Plot
  ggplot(aes(x=factor(Sex), y=Mean,fill=name)) +
  geom_bar(stat='identity',position = position_dodge(0.9)) 

输出:

在此处输入图像描述

于 2020-09-01T17:42:12.297 回答