2017-08-23 6 views
0

私はcountries_toolsという名前の以下のdata.frameを持っています。これは、3列(過去13ヶ月間の日時列()、国との名前の欄()と訪問カラム(人々がそれらの特定の国からのページを訪問))から構成されていますReshape2からのR - dcast - 変数名ではなく変数名による注文

datetime   name   Visits 
2016-07-01 00:00:00 China   5237 
2016-07-01 00:00:00 Germany  1434 
2016-07-01 00:00:00 United States 1530 
2016-07-01 00:00:00 India   696 
2016-07-01 00:00:00 Japan   569 
... 
2017-07-01 00:00:00 China   4484 
2017-07-01 00:00:00 Germany  1593 
2017-07-01 00:00:00 United States 1438 
2017-07-01 00:00:00 India   1204 
2017-07-01 00:00:00 Japan   538 

注意してください。私はその間に他の11ヶ月間を取り除いた。また、その名前は常に、分析された最後の月(この場合は2017年7月)に訪問数の多い5カ国に対応する同じ5カ国のリストです。

このメッセージの末尾には、自分のデータと一致するdputがあります。数ヶ月間での訪問のデータと発展をよりよく理解するために

、私は私のdata.frameからdcastの操作を行います。しかし

countries_tools <- dcast(countries_tools, datetime ~ name, value.var="Visits") 

、国名によって結果のデータフレームの受注列(アルファベット順):

> names(countries_tools) 
[1] "datetime"  "China"   "Germany"  "India"   "Japan"   "United States" 

Order is alphabetical, not by variable value

Iは(訪問)、注文を値変数によって行われることが予想されますしたがって、最適な順序は次のようになります。

日時、中国、ドイツ、米国、インド、日本

は、それが(せいぜいそれは余分なステップを必要とされていない場合)に行うことができますか?他の機能を使用することも可能です。

データ

dput(countries_tools) 
structure(list(datetime = structure(c(1467320400, 1467320400, 
1467320400, 1467320400, 1467320400, 1469998800, 1469998800, 1469998800, 
1469998800, 1469998800, 1472677200, 1472677200, 1472677200, 1472677200, 
1472677200, 1475269200, 1475269200, 1475269200, 1475269200, 1475269200, 
1477951200, 1477951200, 1477951200, 1477951200, 1477951200, 1480543200, 
1480543200, 1480543200, 1480543200, 1480543200, 1483221600, 1483221600, 
1483221600, 1483221600, 1483221600, 1485900000, 1485900000, 1485900000, 
1485900000, 1485900000, 1488319200, 1488319200, 1488319200, 1488319200, 
1488319200, 1490994000, 1490994000, 1490994000, 1490994000, 1490994000, 
1493586000, 1493586000, 1493586000, 1493586000, 1493586000, 1496264400, 
1496264400, 1496264400, 1496264400, 1496264400, 1498856400, 1498856400, 
1498856400, 1498856400, 1498856400), class = c("POSIXct", "POSIXt" 
), tzone = "Europe/Moscow"), name = c("China", "Germany", "United States", 
"India", "Japan", "China", "Germany", "United States", "India", 
"Japan", "China", "Germany", "United States", "India", "Japan", 
"China", "Germany", "United States", "India", "Japan", "China", 
"Germany", "United States", "India", "Japan", "China", "Germany", 
"United States", "India", "Japan", "China", "Germany", "United States", 
"India", "Japan", "China", "Germany", "United States", "India", 
"Japan", "China", "Germany", "United States", "India", "Japan", 
"China", "Germany", "United States", "India", "Japan", "China", 
"Germany", "United States", "India", "Japan", "China", "Germany", 
"United States", "India", "Japan", "China", "Germany", "United States", 
"India", "Japan"), Visits = c(5237, 1434, 1530, 696, 569, 4422, 
1508, 1971, 672, 461, 3993, 1521, 1901, 2027, 517, 3656, 1764, 
1716, 993, 509, 5483, 3117, 2762, 1298, 594, 5548, 2804, 2365, 
1222, 551, 3747, 3083, 1917, 999, 496, 3903, 2136, 1751, 1229, 
611, 5638, 2721, 2074, 1569, 533, 4326, 1618, 1511, 1254, 458, 
4364, 2021, 1690, 1162, 462, 4462, 1572, 1517, 1068, 574, 4484, 
1593, 1438, 1204, 538)), .Names = c("datetime", "name", "Visits" 
), row.names = c(NA, -65L), class = "data.frame") 

答えて

1

あなたはレベルのためにしたい順序を述べ命じた要因に "名前" を変換することができます:

countries_tools$name <- ordered(countries_tools$name, levels = unique(countries_tools$name)) 

今では動作します:

dcast(countries_tools, datetime ~ name, value.var="Visits") 
関連する問題