R-可反应-分组-在顶部显示总计
我对R-可反应-分组-在顶部显示总计,r,react-table,R,React Table,我对R中的可反应有一个问题。我有一个分组df,其中进行了som计算,例如相对数和和和。据我所知,可以使用内置函数max、mean等聚合分组的可反应的。相反,我希望显示名为show_top的行,而不是egcolDef(aggregate=“max”) 。不幸的是,我没有JS方面的经验 colDef( aggregate = JS(" function(values, rows) { // input: // - values: an array of all
R
中的可反应有一个问题。我有一个分组df,其中进行了som计算,例如相对数和和和。据我所知,可以使用内置函数max、mean等聚合分组的可反应的
。相反,我希望显示名为show_top
的行,而不是egcolDef(aggregate=“max”)
。不幸的是,我没有JS方面的经验
colDef(
aggregate = JS("
function(values, rows) {
// input:
// - values: an array of all values in the group
// - rows: an array of row info objects for all rows in the group
//
// output:
// - an aggregated value, e.g. a comma-separated list
return values.join(', ')
}
")
)
请看下面我想要达到的目标
reactable(xy, groupBy = "col1")
虽然这可以通过自定义聚合函数实现,但我认为使用自定义聚合单元渲染器会更容易:
自定义单元渲染器可以访问更多信息,如列的名称(或ID)。自定义聚合函数更适合于对单个列中的值列表进行简单操作
可以使用JavaScript函数自定义所有列的聚合单元格。对于每个聚合单元格,查找col2
值为的子行“show\u top”
。然后,返回与当前列对应的行中的值
下面是一个例子:
library(reactable)
reactable(
xy,
groupBy = "col1",
defaultColDef = colDef(
aggregated = JS("
function(cellInfo) {
for (var i = 0; i < cellInfo.subRows.length; i++) {
var row = cellInfo.subRows[i]
if (row.col2 === 'show_top') {
return row[cellInfo.column.id]
}
}
}
")
)
)
库(可反应)
反应的(
xy,
groupBy=“col1”,
defaultColDef=colDef(
聚合=JS(“
功能(cellInfo){
对于(var i=0;i
cellInfo.subRows
和cellInfo.column
属性都记录在上面的链接中,如果有帮助的话。感谢您的帮助!您知道是否可以从下拉菜单中删除“show_top”并仅显示顶部的值?您可以使用一些条件样式隐藏行(例如,使用rowStyle
函数应用display:none
),但不会删除该行。“组”列仍将显示(4)
行。我认为将这些汇总行保留在数据框架之外,然后使用自定义聚合函数汇总组更有意义。可能还有其他方法可以做到这一点,而不必了解JavaScript,但这是一个不同的问题。
library(reactable)
reactable(
xy,
groupBy = "col1",
defaultColDef = colDef(
aggregated = JS("
function(cellInfo) {
for (var i = 0; i < cellInfo.subRows.length; i++) {
var row = cellInfo.subRows[i]
if (row.col2 === 'show_top') {
return row[cellInfo.column.id]
}
}
}
")
)
)