Die CSV unten ist von einer viel längeren Datentabelle, nennen Sie es temp
. Ich möchte es auf temp.wide
mit region_code
als Spalten und mit der vertikalen Reihenfolge region_code
(SAS, SSA, EUR, ...) als die Reihenfolge der Spalten zu werfen. Mir ist gerade aufgefallen, dass dcast die neuen Spalten alphabetisch sortiert.r Datentabelle dcast Reihenfolge der neuen Spalten
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"))
Hier ist der Code, den ich verwendet habe.
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
Die neuen Spaltennamen sind scenario, EAP, EUR, FSU, LAC, MEN, NAM, SAS, SSA
.
Ich kann die richtige Reihenfolge von temp
nehmen und dann setcolorder
verwenden, um temp.wide
die richtige Spaltenreihenfolge zu geben. Aber ich habe mich gefragt, ob es eine Möglichkeit gibt, die neue Spaltenreihenfolge nicht alphabetisch zu sortieren.
Auch sagt der Hilfetext für dcast
Namen für Spalten, die in der gleichen Reihenfolge erzeugt gegossen werden (durch einen Unterstrich getrennt, _) aus den (eindeutigen) Werten in jeder Spalte in der Formel RHS erwähnt.
Wenn ich das richtig verstehe, denke ich nicht, dass es beschreibt, was dcast tatsächlich macht. Aber ich verstehe nicht, was der Klammerausdruck (durch einen Unterstrich _ getrennt) bedeutet.
bitte ein reproduzierbares Beispiel angeben. –
Könnten Sie bitte die Daten "dput" geben? –
Ich kann die Daten "dput", aber ich weiß nicht, was ich mit der resultierenden Datei machen soll. – JerryN