csv ниже - из гораздо более длинной таблицы данных, назовите ее temp
. Я хочу отличить его от temp.wide
с region_code
в качестве столбцов и с вертикальным порядком region_code
(SAS, SSA, EUR, ...) как порядок столбцов. Я только заметил, что dcast упорядочивает новые столбцы по алфавиту.r таблица данных dcast порядок новых столбцов
scenario region_code region_name value
1: 2010 SAS South Asia 61.17716
2: 2010 SSA Africa south of the Sahara 62.08588
3: 2010 EUR Europe 63.76123
4: 2010 LAC Latin America and Caribbean 68.84806
5: 2010 FSU Former Soviet Union 59.04499
6: 2010 EAP East Asia and Pacific 64.00579
7: 2010 NAM North America 66.18235
8: 2010 MEN Middle East and North Africa 58.03167
9: SSP2-NoCC-REF SAS South Asia 57.29973
10: SSP2-NoCC-REF SSA Africa south of the Sahara 65.14987
11: SSP2-NoCC-REF EUR Europe 63.99204
12: SSP2-NoCC-REF LAC Latin America and Caribbean 68.21118
13: SSP2-NoCC-REF FSU Former Soviet Union 60.10807
14: SSP2-NoCC-REF EAP East Asia and Pacific 63.86103
15: SSP2-NoCC-REF NAM North America 65.97859
16: SSP2-NoCC-REF MEN Middle East and North Africa 58.98356
temp = setDT(structure(list(scenario = c("2010", "2010", "2010", "2010", "2010",
"2010", "2010", "2010", "SSP2-NoCC-REF", "SSP2-NoCC-REF", "SSP2-NoCC-REF",
"SSP2-NoCC-REF", "SSP2-NoCC-REF", "SSP2-NoCC-REF", "SSP2-NoCC-REF",
"SSP2-NoCC-REF"), region_code = c("SAS", "SSA", "EUR", "LAC",
"FSU", "EAP", "NAM", "MEN", "SAS", "SSA", "EUR", "LAC", "FSU",
"EAP", "NAM", "MEN"), region_name = c("South Asia", "Africa south of the Sahara",
"Europe", "Latin America and Caribbean", "Former Soviet Union",
"East Asia and Pacific", "North America", "Middle East and North Africa",
"South Asia", "Africa south of the Sahara", "Europe", "Latin America and Caribbean",
"Former Soviet Union", "East Asia and Pacific", "North America",
"Middle East and North Africa"), value = c(61.1771623260257,
62.0858809906661, 63.7612306428217, 68.84805628195, 59.0449875464304,
64.0057851485101, 66.182351351389, 58.0316719859857, 57.299725759211,
65.1498720847705, 63.9920412193261, 68.2111842947542, 60.1080745513644,
63.86103368494, 65.9785850777114, 58.9835574681585)), .Names = c("scenario",
"region_code", "region_name", "value"), row.names = c(NA, -16L
), class = "data.frame"))
Вот код, который я использовал.
formula.wide <- "scenario ~ region_code"
temp.wide <- data.table::dcast(
data = temp,
formula = formula.wide,
value.var = "value")
scenario EAP EUR FSU LAC MEN NAM SAS SSA
1: 2010 64.00579 63.76123 59.04499 68.84806 58.03167 66.18235 61.17716 62.08588
2: SSP2-NoCC-REF 63.86103 63.99204 60.10807 68.21118 58.98356 65.97859 57.29973 65.14987
Новые имена столбцов: scenario, EAP, EUR, FSU, LAC, MEN, NAM, SAS, SSA
.
Я могу взять правильный заказ от temp
, а затем использовать setcolorder
, чтобы дать temp.wide
правильный порядок столбцов. Но мне было интересно, есть ли способ не иметь новый порядок столбцов в алфавитном порядке.
Кроме того, текст справки для dcast говорит
имен для столбцов, которые отданных генерируются в том же порядке (разделенного знак подчеркивания, _) из (уникальных) значений в каждой колонки упомянутых в формуле RHS.
Если я правильно понимаю это, я не думаю, что он описывает, что на самом деле делает dcast. Но я не понимаю, что означает в скобках фраза (разделенная символом подчеркивания, _).
предоставьте пример воспроизводимости. –
Не могли бы вы рассчитать данные? –
Я могу 'dput' данные, но я не знаю, что делать с результатом файла. – JerryN