【发布时间】:2018-09-13 15:27:53
【问题描述】:
我有一个数据框,其中包括国家/年份对其他国家的进出口。与示例数据集一样,二元导入和导出的数据不会完美重叠。
例如
library(tidyverse)
df <- data.frame("Reporter" = c("USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "Africa","Africa", "Africa","Africa", "Africa","Africa", "Africa","Africa", "EU", "EU","EU", "EU", "EU", "EU","EU", "EU"),
"Partner" = c("Africa","Africa", "Africa","Africa","EU", "EU","EU", "EU", "USA", "USA", "USA", "USA", "EU", "EU","EU", "EU","USA", "USA", "USA", "USA","Africa","Africa", "Africa","Africa"),
"Year" = c(1970, 1970, 1980, 1980, 1970, 1970, 1980, 1980, 1970, 1970, 1980, 1980, 1970, 1970, 1980, 1980, 1970, 1970, 1980, 1980, 1970, 1970, 1980, 1980),
"Flow" = c("Import", "Export","Import", "Export","Import", "Export","Import", "Export","Import", "Export","Import", "Export","Import", "Export","Import", "Export","Import", "Export","Import", "Export","Import", "Export","Import", "Export"),
"Val" = runif(24, min=0, max=100), stringsAsFactors = FALSE)
# Reporter Partner Year Flow Val
# 1 USA Africa 1970 Import 13.169790
# 2 USA Africa 1970 Export 28.531263
# 3 USA Africa 1980 Import 66.811160
# 4 USA Africa 1980 Export 47.556102
# 5 USA EU 1970 Import 59.166556
# 6 USA EU 1970 Export 71.032895
# 7 USA EU 1980 Import 89.688642
# 8 USA EU 1980 Export 36.563593
# 9 Africa USA 1970 Import 33.088294
# 10 Africa USA 1970 Export 10.692528
# 11 Africa USA 1980 Import 69.296384
# 12 Africa USA 1980 Export 54.697131
# 13 Africa EU 1970 Import 64.327314
# 14 Africa EU 1970 Export 64.659566
# 15 Africa EU 1980 Import 6.139465
# 16 Africa EU 1980 Export 97.317815
# 17 EU USA 1970 Import 7.245794
# 18 EU USA 1970 Export 72.291265
# 19 EU USA 1980 Import 14.134386
# 20 EU USA 1980 Export 60.288242
# 21 EU Africa 1970 Import 29.648374
# 22 EU Africa 1970 Export 81.916536
# 23 EU Africa 1980 Import 47.665834
# 24 EU Africa 1980 Export 64.307639
我创建了这个数据的宽版本。
wide_df <- df %>% spread ("Flow", "Val")
我可以为 dyads 创建定向 ID。
wide_df$ReporterID <- as.numeric(factor(wide_df$Reporter, levels=unique(wide_df$Reporter)))
但是,生成的数据认为是不同的,例如美国、非洲、非洲和美国。
问题:如何为每个 dyad 创建一个唯一 ID?
谁能想到一种方法可以让我将这些二元组折叠成一个 ID 码
【问题讨论】:
-
你需要
unique(apply(wide_df[1:2], 1, function(x) paste(sort(x), collapse="_")))
标签: r uniqueidentifier