【问题标题】:R: Sorting Values in Pivot Table (rpivottable)R:对数据透视表中的值进行排序(rpivottable)
【发布时间】:2023-04-06 09:06:01
【问题描述】:

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

我有一个基本的代码行:

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

这是数据:

机场直飞旅客
CAN 直接 100
CDG 间接 5000
CMG 间接 200
DNM 直接 10000
洛杉矶国际机场间接 200
MEL 直接 20
YUL 间接 4000

【问题讨论】:

  • 请通过共享示例数据使代码可重现。
  • 当然,这是示例数据:
  • 在哪里?请将其包含在帖子中。
  • 对不起,我刚刚把它包括在内。虽然我猜这种格式不适合论坛。找不到正确的方法。
  • 您在寻找df[order(df$Passengers, decreasing = T),] 吗?

标签: r pivot-table rpivottable


【解决方案1】:

你要学习的函数是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))

【讨论】:

  • 感谢您的建议。但是,如何将其包含在 rpivottable 代码行中?我需要Pivot Table 中的数据按降序排列。我使它在数据框中下降,但是当我在做数据透视表时,它没有被保留。它使用行中的数据对值进行排序。行有sorter 函数,但数据没有..
  • 我只花了 30 分钟探索 rpivotTable 试图弄清楚,据我所知,它需要一些 javascript,这不是我非常擅长的。而且我对数据透视表更糟糕。留给我自己的设备,我会避免使用它。
  • 哦,这比我想象的要难。感谢您尝试@Benjamin。
猜你喜欢
  • 1970-01-01
  • 2017-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 2021-08-27
  • 2019-11-03
相关资源
最近更新 更多