R studio - Как группировать данные в панели по годам и суммировать их
У меня есть набор данных панели за 20 лет и 10 компаний.
По каждой компании у меня есть данные о продажах в Европе и США.
Я хотел бы построить общий объем продаж в Европе и США за каждый год.
По сути, мне нужно суммировать данные по каждой компании за каждый год для соответствующей переменной.
Как мне это сделать?
Спасибо всем! Я решил проблему usign group_by.
USsales <- data %>% group_by(Year) %>% summarize(tot_USsales = sum(USsales, na.rm = TRUE))
Europesales <- data %>% group_by(Year) %>% summarize(tot_Eursales = sum(Eursales, na.rm = TRUE))
netsales <- merge(Europesales, USsales, by="Year")
Тогда я просто строю это с помощью ggplot.
Спасибо вам, ребята
3 ответа
Если вы используете R, вы можете сделать что-то вроде этого:
require(dplyr)
require(magrittr)
OverallSalesEurope <- Dataset %>%
filter(Region == "Europe") %>%
group_by(Company, Year) %>%
summarize(OverallSales =
sum(Sales, na.rm=TRUE))
OverallSalesUS <- Dataset %>%
filter(Region == "US") %>%
group_by(Company, Year) %>%
summarize(OverallSales =
sum(Sales, na.rm=TRUE))
Конечно, мы не знаем, как называются ваши переменные в вашем наборе данных, но соответствующие принципы проиллюстрированы в приведенном выше коде.
Это помогло бы получить образец данных. Во всяком случае это кажется простым вариантом использования group_by
от dplyr
библиотека.
В основном группа по company
, year
а также country
, затем sum
,
Вот пример:
library(dyplr)
my_data %>%
group_by(company, year, country) %>%
summarise(mean_rev = mean(revenue))
# # A tibble: 8 x 4
# # Groups: company, year [?]
# company year country mean_rev
# <fct> <fct> <fct> <dbl>
# 1 A 2017 EU 74.1
# 2 A 2017 USA 59.6
# 3 A 2018 EU 64.7
# 4 A 2018 USA 79.8
# 5 B 2017 EU 79.8
# 6 B 2017 USA 79.1
# 7 B 2018 EU 81.0
# 8 B 2018 USA 74.7
Поддельные данные:
my_data <- data.frame(
company = c(rep("A", 10), rep("B", 10)),
year = rep(c("2017","2018"), 10),
country = c(rep("EU", 20), rep("USA", 20)),
revenue = runif(40,50,100)
)
head(my_data)
# company year country revenue
# 1 A 2017 EU 78.08958
# 2 A 2018 EU 55.93207
# 3 A 2017 EU 57.55178
# 4 A 2018 EU 53.43027
# 5 A 2017 EU 50.02976
# 6 A 2018 EU 60.26888
Кажется, вы хотите построить это, а не просто подвести итог.
Принимая набор данных RLave:
my_data <- data.frame(
company = c(rep("A", 10), rep("B", 10)),
year = rep(c("2017","2018"), 10),
country = c(rep("EU", 20), rep("USA", 20)),
revenue = runif(40,50,100)
)
И пакет ggplot2:
library(ggplot2)
ggplot(my_data,aes(x=country,y=revenue))+
geom_boxplot()+
theme_classic(base_size=12)+
facet_wrap(~company+year)
Вы можете построить грани для каждой категории компаний, стран и лет. Бокплоты являются обычным типом фигур для данных такого рода, первый и третий квартили - это концы коробки, медиана обозначена вертикальной линией внутри коробки, а минимальное и максимальное - это концы усы.