R studio - 如何按年份对面板中的数据进行分组并对它们求和
R studio - How to group data in a panel by year and sum them
我有一个 20 年和 10 家公司的面板数据集。
我有每家公司在欧洲和美国的销售数据。
我想绘制欧洲和美国每年的整体销售额。
基本上,我需要对每个公司每年的各个变量的数字求和。
我应该怎么做?
谢谢大家!我用 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画出来了。
谢谢大家
如果你使用 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))
当然,我们不知道你的变量在你的数据集中是什么名字,但是其中的原理在上面的代码中已经说明了。
有数据样本会很有帮助。无论如何,这似乎是 dplyr
库中 group_by
的一个简单用例。
基本上按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)
您可以为每个类别的公司、国家和年份构建构面。箱线图是此类数据的常用图形类型,第一和第三四分位数是箱子的两端,中位数在箱子内部用垂直线表示,最小值和最大值是箱子的两端胡须。
我有一个 20 年和 10 家公司的面板数据集。
我有每家公司在欧洲和美国的销售数据。
我想绘制欧洲和美国每年的整体销售额。
基本上,我需要对每个公司每年的各个变量的数字求和。
我应该怎么做?
谢谢大家!我用 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画出来了。
谢谢大家
如果你使用 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))
当然,我们不知道你的变量在你的数据集中是什么名字,但是其中的原理在上面的代码中已经说明了。
有数据样本会很有帮助。无论如何,这似乎是 dplyr
库中 group_by
的一个简单用例。
基本上按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)
您可以为每个类别的公司、国家和年份构建构面。箱线图是此类数据的常用图形类型,第一和第三四分位数是箱子的两端,中位数在箱子内部用垂直线表示,最小值和最大值是箱子的两端胡须。