Создание уникального идентификатора для двух строковых переменных - PullRequest
0 голосов
/ 26 сентября 2018

У меня проблемы с предоставлением уникального и непротиворечивого идентификатора случая для моего набора данных, может быть, кто-то может помочь.

У меня есть набор торговых данных, подобный следующему:

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 страну-партнера больше, чем у репортеров.

Я могу установить уникальные идентификаторы как для своих репортеров, так и для переменных партнеров

df$repID <- as.numeric(factor(df$Reporter, 
                             levels=unique(df$Reporter)))
df$partID <- as.numeric(factor(df$Partner, 
                              levels=unique(df$Partner)))

Проблема использования этого метода заключается в том, что идентификаторы делаютне совпадают по двум partID и repID.например, если идентификатор США равен «1» в repID, в partID - «4».

Я хотел бы создать идентификаторы стран, которые согласуются между двумя столбцами, например, для США это "1" как в repID, так и в partID.Также важно, чтобы у всех Партнеров, которые не являются репортерами (например, в Азии), был свой собственный и уникальный код.

большое спасибо за вашу помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...