我试图为R中的贸易流动建立一个有指导的网络,我有出口和进口数据,这并不总是匹配的,我想要创建不匹配值的平均值(我想防止在一个dyad之间有两个流:经济A出口到合作伙伴B(标记为出口)和经济B进口从记者A(标记为进口))。我也需要按年份和类别分组。
Year Economy Partner Flow Category value
2006 040 124 Export S 163相反,它看起来是这样的
Year Economy Partner Flow Category value
2006 124 040 Import S 160它们在相同的数据集中,但很容易被分成两部分。正如你所看到的,这个值不匹配,我想得到它的平均值。我尝试了以下几点:
group_by(Year, Category) %>% mutate(mean =
case_when(Economy == Partner & Partner == Economy & Flow != Flow,
summarise(mean = mean(value, na.rm = T))))但这显然行不通。我在想一些类似这样的东西可以起作用,但它不起作用。而且我需要将它包含到一个group_by调用中,因为我有多年和多个类别。
function(x, y, z, b, k){
x == y & z == b & Flow != Flow
mean <- mean(k, na.rm = T)有人有什么建议吗?谢谢!
发布于 2020-07-20 15:49:13
你的所有进口(或出口)贸易如何?
从带有列名的df开始:
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_by和summarise操作应该是直接的。
https://stackoverflow.com/questions/62992907
复制相似问题