如何绘制以另一列信息为条件的大型数据集的年平均值?

时间:2019-11-05 11:05:01

标签: r

我有一个包含数百万个企业,其分类为STARTUPS或NOTS以及其年收入的数据集。

数据如下:

enter image description here

我想计算和绘制属于STARTUPS的公司集团和非STARTUPS的公司集团的年度平均值。换句话说,我想计算和绘制1998年,1999年,2000年……的STARTUPS收入的平均值和1998年,1999年,2000年,2001年……非STARTUPS的收入平均值。 / p>

我该怎么做?

Ps。当我尝试分别计算每列的平均值时,由于某种原因,结果以NaN的形式出现,我不知道为什么。例如,当我运行代码mean(data $ 1998,na.rm = TRUE)时,结果为NaN。

1 个答案:

答案 0 :(得分:1)

编辑:如果不实际查看数据,很难说出NaN的原因。以下答案是您原始问题的答案。

总是提供示例数据以便我们重新创建总是好的。在您的示例中,我创建了一个虚拟数据,并演示了如何进行处理。

IDs <- 
data.frame(enterprise = letters,
       classification = sample(c('STARTUP','NOT STARTUP'), length(letters), replace = TRUE))

dat <-
as.data.frame(matrix(sample(200:600, length(letters) * 7), nrow = length(letters), ncol = 7))
names(dat) <- 1998:2004

final.dat <- as.data.frame(cbind(IDs, dat))

final.dat看起来与您的数据相似。

我要做的第一件事是将数据转换为长格式

  library(tidyr)

  final.dat_long <- tidyr::gather(final.dat, yearRef, revenue, `1998`:`2004`)

现在按分类和年份分组以获取每个分类和年份组合的平均值

summary <- final.dat_long %>% group_by(classification, 
 yearRef) %>% 
 summarise(meanRevenue = mean(revenue))

对于绘图,有很多工具。我正在使用ggplot

 library(ggplot2)

  ggplot(summary, aes(x = yearRef, y = meanRevenue, fill 
  = classification)) +
  geom_bar(position = 'dodge', stat = 'identity')

enter image description here