У меня есть набор данных с номерами импорта и экспорта из стран, который выглядит в основном так:
Country_from Country_to Count Value
UK USA 5 10
France Belgium 4 7
USA UK 1 6
Belgium France 8 9
Теперь я хочу объединить эти данные и объединить числа импорта и экспорта суммированием.Итак, я хочу, чтобы мой результирующий кадр данных был:
Country_from Country_to Count Value
UK USA 6 16
France Belgium 12 16
Я создал скрипт, который объединяет страны to
и from
, а затем сортирует символы по алфавиту, чтобы проверить, например, Великобритания - СШАи США-Великобритания совпадают, а затем агрегируют значения.
Эта часть моего кода для сортировки выглядит следующим образом:
#concatenate to and from country name
country_from = data.frame(lapply(data_lines$Country_from, as.character), stringsAsFactors=FALSE)
country_to = data.frame(lapply(data_lines$Country_to, as.character), stringsAsFactors=FALSE)
concat_names = as.matrix(paste(country_from, country_to, " "))
#order characters alphabetically
strSort <- function(x)
sapply(lapply(strsplit(x, NULL), sort), paste, collapse="")
sorted = strSort(concat_names)
Этот подход работает в данном конкретном случае, но можеттеоретически может быть так, что две разные страны имеют одинаковые алфавитно отсортированные символы.
Если существует комбинация Country_from
- Country_to
без того же обратного, то она должна сохранять значения по мере их поступления (поэтому ничего не делать).
У кого-нибудь есть идея?как это сделать без использования отсортированных по алфавиту символов?