R studio - Как группировать данные в панели по годам и суммировать их - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть набор данных панели за 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 ]

0 голосов
/ 05 ноября 2018

Было бы полезно иметь образец данных. В любом случае, это простой пример использования 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
0 голосов
/ 06 ноября 2018

Кажется, что вы хотите построить это, а не просто подвести итог.

Принимая набор данных 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)

Вы можете построить фасеты для каждой категории компаний, стран и лет. Бокплоты являются обычным типом фигур для данных такого рода, первый и третий квартили - это концы коробки, медиана обозначена вертикальной линией внутри коробки, а минимальное и максимальное - это концы усов.

Boxplots of revenues per country, for each year and each company. Made with ggplot2 and facet_wrap.

0 голосов
/ 05 ноября 2018

Если вы используете 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)) 

Конечно, мы не знаем, как называются ваши переменные в вашем наборе данных, но соответствующие принципы проиллюстрированы в коде выше.

...