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