首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多种条件下的平均计算(R中的贸易数据协调)

多种条件下的平均计算(R中的贸易数据协调)
EN

Stack Overflow用户
提问于 2020-07-20 09:56:15
回答 1查看 43关注 0票数 1

我试图为R中的贸易流动建立一个有指导的网络,我有出口和进口数据,这并不总是匹配的,我想要创建不匹配值的平均值(我想防止在一个dyad之间有两个流:经济A出口到合作伙伴B(标记为出口)和经济B进口从记者A(标记为进口))。我也需要按年份和类别分组。

代码语言:javascript
复制
Year Economy Partner Flow    Category value
2006 040     124     Export  S        163

相反,它看起来是这样的

代码语言:javascript
复制
Year Economy Partner Flow    Category value
2006 124     040     Import  S        160

它们在相同的数据集中,但很容易被分成两部分。正如你所看到的,这个值不匹配,我想得到它的平均值。我尝试了以下几点:

代码语言:javascript
复制
group_by(Year, Category) %>% mutate(mean = 
case_when(Economy == Partner & Partner == Economy & Flow != Flow, 
summarise(mean = mean(value, na.rm = T))))

但这显然行不通。我在想一些类似这样的东西可以起作用,但它不起作用。而且我需要将它包含到一个group_by调用中,因为我有多年和多个类别。

代码语言:javascript
复制
function(x, y, z, b, k){
   x == y & z == b & Flow != Flow
   mean <- mean(k, na.rm = T)

有人有什么建议吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-20 15:49:13

你的所有进口(或出口)贸易如何?

从带有列名的df开始:

代码语言:javascript
复制
library(dplyr)
df %>%
  filter(Flow == "Export") %>%
  mutate(aux = Economy, Economy = Partner, Partner = aux,
         Flow = "Import") %>%
  select(-aux) -> tmp
rbind(df, tmp) %>%
  filter(Flow == "Import") -> df2

df2中,您应该拥有与df相同的信息,但是现在group_bysummarise操作应该是直接的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62992907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档