0

我是PivotTableR 中的新手,我希望对表中的值(R 中的“vals”)进行排序(从最大到最小)。我正在处理乘客数据,我希望最大数量的乘客出现在表格的第一行。它现在按机场名称(我的行)的字母顺序排序,但我更感兴趣的是按乘客数量(我在表中的值)排序。谢谢

我有一个基本的代码行:

rpivotTable(data1, rows="Airport", col="Direct", aggregatorName="Sum", 
                                                vals="Passengers", rendererName="Heatmap")

这是数据:

机场直达乘客
CAN Direct 100
CDG Indirect 5000
CMG Indirect 200
DNM Direct 10000
LAX Indirect 200
MEL Direct 20
YUL Indirect 4000

4

1 回答 1

0

你要研究的函数是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), ]

你可以做更多的多重排列,比如order byDirect然后Passengers使用

data1[order(data1$Direct, data1$Passengers), ]

但是上一行要求所有的排序都是升序或降序。如果你想要混合,我建议使用dplyr

library(dplyr)
arrange(data1, Direct, desc(Passengers))
于 2016-05-27T13:54:36.453 回答