我是第一次在R中使用PivotTable
,我希望对表中的值(从大到小)进行排序(从大到小)。我正在使用乘客数据,我希望在表的第一行中出现最多的乘客。它现在按机场名称(我的行)的字母顺序排序,但我更感兴趣的是按乘客数量(我在表中的值)对其进行排序。谢谢
我有一行基本的代码:
rpivotTable(data1, rows="Airport", col="Direct", aggregatorName="Sum",
vals="Passengers", rendererName="Heatmap")
以下是数据:
机场直达旅客
CAN 直接 100
戴高乐间接 5000
CMG 间接 200
DNM 直销 10000
洛杉矶国际机场间接 200
梅尔直销 20
YUL 间接 4000
你想研究的函数是order
。 要在将来共享示例数据,您可以使用dput(data1)
并将内容复制并粘贴到问题中。
data1 <- structure(list(Airport = structure(1:7, .Label = c("CAN", "CDG",
"CMG", "DNM", "LAX", "MEL", "YUL"), class = "factor"), Direct = structure(c(1L,
2L, 2L, 1L, 2L, 1L, 2L), .Label = c("Direct", "Indirect"), class = "factor"),
Passengers = c(100L, 5000L, 200L, 10000L, 200L, 20L, 4000L
)), .Names = c("Airport", "Direct", "Passengers"), class = "data.frame", row.names = c(NA,
-7L))
使用订单,我们可以根据需要安排您的数据
data1[order(data1$Passengers, decreasing = TRUE), ]
您可以执行更多多种排列,例如按Direct
排序,然后按Passengers
排序
data1[order(data1$Direct, data1$Passengers), ]
但前一行要求所有顺序要么升序,要么全部降序。 如果你想要混音,我建议使用dplyr
library(dplyr)
arrange(data1, Direct, desc(Passengers))