我无法为数据集提供唯一且一致的案例ID,也许有人可以提供帮助。
我有一个类似于以下的交易数据集:
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("Asia", "Asia", "Asia", "Asia","Africa","Africa", "Africa","Africa","EU", "EU","EU", "EU", "USA", "USA", "USA", "USA", "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)
请注意,尽管所有报告国均为合作伙伴setdiff(df$Reporter, df$Partner)
。 setdiff(df$Partner, df$Reporter)
相反。在实际数据中,我的合作伙伴国家比记者多61个国家。
我可以为我的报告者变量和合作伙伴变量设置唯一的ID
df$repID <- as.numeric(factor(df$Reporter,
levels=unique(df$Reporter)))
df$partID <- as.numeric(factor(df$Partner,
levels=unique(df$Partner)))
使用此技术的问题是,两个partID和repID之间的ID不匹配。 例如repID中的USA ID为“ 1”,而partID中的USA ID为“ 4”。
我想创建在两列中一致的国家/地区ID,例如,美国的repID和partID均为“ 1”。同样重要的是,所有不是记者的合作伙伴(即亚洲)都必须拥有自己的唯一代码。
非常感谢您的帮助
答案 0 :(得分:1)
两个因素应具有相同的水平。您应该为两个因素的水平使用较大的集(伙伴)。
df$repID <- as.numeric(factor(df$Reporter, levels=unique(df$Partner)))
df$partID <- as.numeric(factor(df$Partner, levels=unique(df$Partner)))