Как отобразить среднегодовое значение большого набора данных, зависящее от информации другого столбца? - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть набор данных с миллионами предприятий, их классификациями как STARTUPS или NOTS и их годовым доходом.

Данные выглядят следующим образом:

enter image description here

И я хочу рассчитать и построить график среднегодовых значений для группы компаний, которыеСТАРТАПЫ и группы компаний, которые НЕ СТАРТАПЫ. Другими словами, я хочу рассчитать и нанести на карту средства дохода STARTUPS в 1998, 1999, 2000, .... и средства NOT STARTUPS в 1998, 1999, 2000, 2001 .....

Как я могу это сделать?

Ps. Когда я пытаюсь вычислить среднее значение для каждого столбца в отдельности, по какой-то причине результаты появляются как NaN, и я не знаю почему. Например, когда я запускаю среднее значение кода (данные $ 1998, na.rm = TRUE), результат равен NaN.

1 Ответ

1 голос
/ 05 ноября 2019

РЕДАКТИРОВАТЬ: трудно сказать причину 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`)

Теперь сгруппировать по классификации и yearRef, чтобы получить среднее значение для каждой классификации и комбинации года

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...