帮助!计算每个子组的比例
R Help! Calculate the proportion per subgroup
我有以下 数据集,称为 GrossExp3,涵盖 15 个报告国家/地区所有年份的双边出口(以 1000 美元为单位)从 (1998 – 2018) 到所有可用的伙伴国家
它涵盖以下四个 变量:
Year, ReporterName (= exporter) , PartnerName (= export destination), 'TradeValue in 1000 USD' (= export value to the destination)
PartnerName 列还包括一个名为“All”的条目,它是报告者每年所有出口的总和
这是我的数据头
> head(GrossExp3, n = 20)
Year ReporterName PartnerName TradeValue in 1000 USD
1: 2018 Angola Afghanistan 19.353
2: 2018 Angola Albania 2.380
3: 2018 Angola Andorra 0.326
4: 2018 Angola United Arab Emirates 884725.078
5: 2018 Angola Argentina 61.362
6: 2018 Angola Armenia 60.105
7: 2018 Angola American Samoa 12.007
8: 2018 Angola Antigua and Barbuda 422.006
9: 2018 Angola Australia 40220.092
10: 2018 Angola Austria 433.699
这是我的数据摘要
> summary(GrossExp3)
Year ReporterName PartnerName TradeValue in 1000 USD
Min. :1998 Length:37398 Length:37398 Min. : 0
1st Qu.:2004 Class :character Class :character 1st Qu.: 39
Median :2009 Mode :character Mode :character Median : 596
Mean :2009 Mean : 135605
3rd Qu.:2014 3rd Qu.: 10209
Max. :2019 Max. :47471515
我的目标 是按年度按出口总额的百分比过滤每个国家/地区最重要的出口目的地(所有百分比得分超过 1%)并跟踪其变化情况时间。
特别是,我想
- 添加一个名为“百分比”的附加列,其中包含按年份计算的总出口百分比('TradeValue in 1000 USD' 按年份计算的所有条目的总和)
- 降低所有百分比 < 1
- 按年份汇总每个 ReporterName 的数据
- 百分比值降序排列
我试过的
到目前为止,我通过先过滤一个 ReporterName 和一年
来尝试
ONE_country <- GrossExp3 %>%
group_by(Year, ReporterName) %>%
filter(ReporterName == "Botswana", PartnerName != "All", Year == 2018) %>%
arrange(desc(`TradeValue in 1000 USD`)) %>%
summarize(Year, ReporterName, PartnerName, Percent = `TradeValue in 1000 USD`/sum(`TradeValue in 1000 USD`)*100)
head(ONE_country, n = 10)
我不确定我得到的结果是否正确。
此外,我希望所有国家和年份的 信息保留在同一个数据集中 。
此外,我 无法删除所有百分比 > 1,并且希望百分比 逗号 .[=13= 后没有条目的圆]
另一个问题是,为什么 summarize 函数 不 return 所有列,如果我不在函数中写它们?
由于周末我一直被这些问题所困扰,我将非常感谢任何有关如何解决该问题的建议!!
祝一切顺利,
梅里克
没有可重现的数据,这很难回答,但这可能会有所帮助:
GrossExp3 %>%
group_by(Year, ReporterName) %>%
add_tally(wt = `TradeValue in 1000 USD`, name = "TotalValue") %>%
mutate(Percentage = 100 * (`TradeValue in 1000 USD` / TotalValue)) %>%
filter(Percentage >= 1) %>%
arrange(ReporterName, Year, desc(Percentage))
我们使用 add_tally()
按国家/地区计算年度总贸易值,然后使用 mutate()
计算每一行占该总数的百分比。然后我们可以排除百分比 < 1% 的行,并按国家、年份和百分比降序排列。
根据您在上面提供的非常有限的代码段,这是返回的内容:
# A tibble: 2 x 6
# Groups: Year, ReporterName [1]
Year ReporterName PartnerName `TradeValue in 1000 USD` TotalValue Percentage
<dbl> <chr> <chr> <dbl> <dbl> <dbl>
1 2018 Angola United Arab Emirates 884725. 925956. 95.5
2 2018 Angola Australia 40220. 925956. 4.34
我有以下 数据集,称为 GrossExp3,涵盖 15 个报告国家/地区所有年份的双边出口(以 1000 美元为单位)从 (1998 – 2018) 到所有可用的伙伴国家 它涵盖以下四个 变量: Year, ReporterName (= exporter) , PartnerName (= export destination), 'TradeValue in 1000 USD' (= export value to the destination) PartnerName 列还包括一个名为“All”的条目,它是报告者每年所有出口的总和
这是我的数据头
> head(GrossExp3, n = 20)
Year ReporterName PartnerName TradeValue in 1000 USD
1: 2018 Angola Afghanistan 19.353
2: 2018 Angola Albania 2.380
3: 2018 Angola Andorra 0.326
4: 2018 Angola United Arab Emirates 884725.078
5: 2018 Angola Argentina 61.362
6: 2018 Angola Armenia 60.105
7: 2018 Angola American Samoa 12.007
8: 2018 Angola Antigua and Barbuda 422.006
9: 2018 Angola Australia 40220.092
10: 2018 Angola Austria 433.699
这是我的数据摘要
> summary(GrossExp3)
Year ReporterName PartnerName TradeValue in 1000 USD
Min. :1998 Length:37398 Length:37398 Min. : 0
1st Qu.:2004 Class :character Class :character 1st Qu.: 39
Median :2009 Mode :character Mode :character Median : 596
Mean :2009 Mean : 135605
3rd Qu.:2014 3rd Qu.: 10209
Max. :2019 Max. :47471515
我的目标 是按年度按出口总额的百分比过滤每个国家/地区最重要的出口目的地(所有百分比得分超过 1%)并跟踪其变化情况时间。 特别是,我想
- 添加一个名为“百分比”的附加列,其中包含按年份计算的总出口百分比('TradeValue in 1000 USD' 按年份计算的所有条目的总和)
- 降低所有百分比 < 1
- 按年份汇总每个 ReporterName 的数据
- 百分比值降序排列
我试过的 到目前为止,我通过先过滤一个 ReporterName 和一年
来尝试ONE_country <- GrossExp3 %>%
group_by(Year, ReporterName) %>%
filter(ReporterName == "Botswana", PartnerName != "All", Year == 2018) %>%
arrange(desc(`TradeValue in 1000 USD`)) %>%
summarize(Year, ReporterName, PartnerName, Percent = `TradeValue in 1000 USD`/sum(`TradeValue in 1000 USD`)*100)
head(ONE_country, n = 10)
我不确定我得到的结果是否正确。 此外,我希望所有国家和年份的 信息保留在同一个数据集中 。 此外,我 无法删除所有百分比 > 1,并且希望百分比 逗号 .[=13= 后没有条目的圆]
另一个问题是,为什么 summarize 函数 不 return 所有列,如果我不在函数中写它们?
由于周末我一直被这些问题所困扰,我将非常感谢任何有关如何解决该问题的建议!! 祝一切顺利, 梅里克
没有可重现的数据,这很难回答,但这可能会有所帮助:
GrossExp3 %>%
group_by(Year, ReporterName) %>%
add_tally(wt = `TradeValue in 1000 USD`, name = "TotalValue") %>%
mutate(Percentage = 100 * (`TradeValue in 1000 USD` / TotalValue)) %>%
filter(Percentage >= 1) %>%
arrange(ReporterName, Year, desc(Percentage))
我们使用 add_tally()
按国家/地区计算年度总贸易值,然后使用 mutate()
计算每一行占该总数的百分比。然后我们可以排除百分比 < 1% 的行,并按国家、年份和百分比降序排列。
根据您在上面提供的非常有限的代码段,这是返回的内容:
# A tibble: 2 x 6
# Groups: Year, ReporterName [1]
Year ReporterName PartnerName `TradeValue in 1000 USD` TotalValue Percentage
<dbl> <chr> <chr> <dbl> <dbl> <dbl>
1 2018 Angola United Arab Emirates 884725. 925956. 95.5
2 2018 Angola Australia 40220. 925956. 4.34