Java rPivotTable中的排序

Java rPivotTable中的排序,java,r,github,rpivottable,Java,R,Github,Rpivottable,我有这个rpivotTable,我不想手动输入我想排序的值,而是想在数据透视表中按值排序。因此,基本上,当我更改左列上的变量时,我希望按照表中的值对它们进行排序 下面是一个可复制的示例: library(devtools) devtools::install_github("smartinsightsfromdata/rpivotTable") library(rpivotTable) data(HairEyeColor) rpivotTable(data = HairEyeColor,

我有这个rpivotTable,我不想手动输入我想排序的值,而是想在数据透视表中按值排序。因此,基本上,当我更改左列上的变量时,我希望按照表中的值对它们进行排序

下面是一个可复制的示例:

library(devtools)
devtools::install_github("smartinsightsfromdata/rpivotTable")
library(rpivotTable)   

data(HairEyeColor)
rpivotTable(data = HairEyeColor, rows = "Hair",cols="Eye", vals = "Freq", aggregatorName = "Sum", rendererName = "Table", sorters = "
function(attr) { 
var sortAs = $.pivotUtilities.sortAs;
if (attr == \"Hair\") { return sortAs([\"Red\", \"Brown\", \"Blond\", \"Black\"]); }
}", width="100%", height="400px")

我偶然发现你的问题是在寻找解决方案,我相信我已经找到了一种方法来做你想做的事。我知道这个问题已经有两年多的历史了,但希望它能被需要解决方案并被认为有帮助的人找到

要按“VAL”和其他指标(如“cols”或“rows”)进行排序,需要在sorters函数中简单地包含另一条“if”语句

使用开发商提供的可复制示例作为起点:

library(rpivotTable)   
data(HairEyeColor)
rpivotTable(data = HairEyeColor, rows = "Hair",cols="Eye", vals = "Freq", aggregatorName = "Sum", rendererName = "Table", sorters = "
function(attr) { 
var sortAs = $.pivotUtilities.sortAs;
if (attr == \"Hair\") { return sortAs([\"Red\", \"Brown\", \"Blond\", \"Black\"]); }
}", width="100%", height="400px")
下一步是在头发颜色后的结束括号后添加另一个
if(attr=='\“\”
)语句。比如说,您还希望按眼睛颜色排序,首先列出的颜色是棕色,而不是蓝色。您可以编写以下代码来完成此操作:

library(rpivotTable)   
data(HairEyeColor)
rpivotTable(data = HairEyeColor, rows = "Hair",cols="Eye", vals = "Freq", 
aggregatorName = "Sum", rendererName = "Table", sorters = "
function(attr) { 
var sortAs = $.pivotUtilities.sortAs;
if (attr == \"Hair\") { return sortAs([\"Red\", \"Brown\", \"Blond\", \"Black\"]);}
if (attr == \"Eye\") { return sortAs([\"Brown\", \"Blue\", \"Green\", \"Hazel\"]);}
}", width="100%", height="400px")

请记住,此包是围绕PivotTable.js开发的,因此您可以在代码中包含
$.pivotUtilities.sorta
函数的功能,以执行其他排序,例如升序和降序。参考

我在寻找解决方案时遇到了你的问题,我相信我已经找到了一种方法来满足你的要求。我知道这个问题已经有两年多的历史了,但希望它能被需要解决方案并被认为有帮助的人找到

要按“VAL”和其他指标(如“cols”或“rows”)进行排序,需要在sorters函数中简单地包含另一条“if”语句

使用开发商提供的可复制示例作为起点:

library(rpivotTable)   
data(HairEyeColor)
rpivotTable(data = HairEyeColor, rows = "Hair",cols="Eye", vals = "Freq", aggregatorName = "Sum", rendererName = "Table", sorters = "
function(attr) { 
var sortAs = $.pivotUtilities.sortAs;
if (attr == \"Hair\") { return sortAs([\"Red\", \"Brown\", \"Blond\", \"Black\"]); }
}", width="100%", height="400px")
下一步是在头发颜色后的结束括号后添加另一个
if(attr=='\“\”
)语句。比如说,您还希望按眼睛颜色排序,首先列出的颜色是棕色,而不是蓝色。您可以编写以下代码来完成此操作:

library(rpivotTable)   
data(HairEyeColor)
rpivotTable(data = HairEyeColor, rows = "Hair",cols="Eye", vals = "Freq", 
aggregatorName = "Sum", rendererName = "Table", sorters = "
function(attr) { 
var sortAs = $.pivotUtilities.sortAs;
if (attr == \"Hair\") { return sortAs([\"Red\", \"Brown\", \"Blond\", \"Black\"]);}
if (attr == \"Eye\") { return sortAs([\"Brown\", \"Blue\", \"Green\", \"Hazel\"]);}
}", width="100%", height="400px")

请记住,此包是围绕PivotTable.js开发的,因此您可以在代码中包含
$.pivotUtilities.sorta
函数的功能,以执行其他排序,例如升序和降序。请参阅

不确定这是否是OP想要的,但我有一个类似的问题,如果有人试图对rpivottable进行排序,请与我分享解决方案

我想按聚合器值排序,而不是按列/行上的变量排序。在聚合器下拉列表旁边有两个带小箭头的按钮,您可以单击它们来执行此操作。但是,我希望表在默认情况下按特定方式排序,这样用户就不必单击按钮

我尝试了上面提到的解决方案,但那不是我想要的。分拣机选项似乎对我的用例没有帮助

如果您的表位于某种html文档(rmarkdown、Shining、flexdashboard…)上,则可以使用一些javascript在加载页面时单击按钮。将其放在文档中的某个位置(代码块之外)


addEventListener(“加载”,函数(){
//此函数中的代码将在页面完全加载后执行
document.getElementsByClassName(“PVTColder”)[0]。单击();
document.getElementsByClassName(“PVTColder”)[0]。单击();
});
这将按列降序对可视化进行排序(单击按钮2次)。如果将[0]更改为[1],它将以文档中的第二个表、[2]第三个表为目标,依此类推。“pvtRowOrder”将单击按钮对行进行排序


我总是将rpivottables放在flexdashboard中,因为您可以定义css来定制字体,添加滚动,并在滚动时将表格标题粘贴到顶部,所以这个解决方案对我来说很好。

不确定这是否是OP想要的,但我也遇到了类似的问题,如果有人试图对rpivottable进行排序,那么分享解决方案可能会很有用

我想按聚合器值排序,而不是按列/行上的变量排序。在聚合器下拉列表旁边有两个带小箭头的按钮,您可以单击它们来执行此操作。但是,我希望表在默认情况下按特定方式排序,这样用户就不必单击按钮

我尝试了上面提到的解决方案,但那不是我想要的。分拣机选项似乎对我的用例没有帮助

如果您的表位于某种html文档(rmarkdown、Shining、flexdashboard…)上,则可以使用一些javascript在加载页面时单击按钮。将其放在文档中的某个位置(代码块之外)


addEventListener(“加载”,函数(){
//此函数中的代码将在页面完全加载后执行
document.getElementsByClassName(“PVTColder”)[0]。单击();
document.getElementsByClassName(“PVTColder”)[0]。单击();
});
这将按列降序对可视化进行排序(单击按钮2次)。如果将[0]更改为[1],它将以文档中的第二个表、[2]第三个表为目标,依此类推。“pvtRowOrder”将单击按钮对行进行排序


我总是将rpivottables放在flexdashboard中,因为您可以定义css来定制字体,添加滚动,并在滚动时将表格的标题粘贴到顶部,所以这个解决方案对我来说很好。

如果您使用
require
,则不需要
。如果使用
install\u GitHub
从GitHub安装,请不要在安装后立即使用
install.packages
。没道理。好的,谢谢。除此之外,当您运行此程序时,如何按照值而不是类别进行排序@帕斯卡拉为发现问题而道歉