У меня есть данные двусторонних обменов, такие как:
library(datatable)
mwe <- data.table(Importer=c("Country_A","Country_A","Country_A","Country_A",
"Country_B","Country_B","Country_B","Country_B",
"World","World","World","World",
"Country_C","Country_C","Country_C","Country_C"),
Short_Importer=c("A","A","A","A",
"B","B","B","B",
"W","W","W","W",
"C","C","C","C"),
Exporter=c("Country_A", "Country_B", "World", "Country_C",
"Country_A", "Country_B", "World", "Country_C",
"Country_A", "Country_B", "World", "Country_C",
"Country_A", "Country_B", "World", "Country_C"),
Value=c(0,12,36,24,
10,0,44,34,
30,22,110,58,
20,10,30,0))
Я изменил их в более широком формате
mwe_wide <- dcast(mwe, Importer + Short_Importer ~ Exporter, value.var = "Value")
Я бы хотел, чтобы это было датировано, но вместо этого использовались доли в столбцах ценностей. Поэтому я хотел бы просто заменить столбцы с 3 по 5 теми же значениями, деленными на сумму в том же столбце для мира строк. Я предполагаю, что это не очень сложно, но не нашел удовлетворительного способа сделать это. В действительности у меня есть несколько субрегионов, поэтому я хотел бы избежать удаления мира линий и деления их на сумму.
desired_output <- data.table(Importer=c("Country_A", "Country_B", "Country_C", "World"),
Short_Importer=c("A","B","C","W"),
Country_A =c(0,0.33,0.66,1),
Country_B =c(0,0.55,0.45,1),
Country_C =c(0,0.41,0.59,1),
World =c(0.33,0.40,0.27,1))