expss 表中出现重叠小计的重复行
Duplicate rows occuring with overlapping subtotals in expss tables
继今天早些时候遇到的情况之后,又出现了一个与 expss 相关的新问题。
在交叉表创建序列中使用重叠小计会导致重复行,更准确地说,至少在两个不同小计中使用的行。
让我们考虑 infert
数据集来突出这个问题。为了演示,我们将 parity
强制转换为因子。
library(datasets)
infert$parity <- factor(infert$parity)
infert %>%
tab_cells(parity) %>%
tab_subtotal_cells("1+2+3"=levels(parity)[1:3], "1+2"=levels(parity)[1:2],
position = "above") %>%
tab_cols(total()) %>%
tab_stat_cases(label="N", total_row_position="none") %>%
tab_pivot(stat_position="inside_columns")
结果不言自明。尽管我明白为什么会发生这种情况(需要计算每个不同的总数),但我想知道是否有一种聪明的方法来摆脱重复项。
作为一个附属问题,由于小计可以 written/positionned 以多种不同的方式出现,因此输出顺序可能会非常混乱。是否有排序 and/or 仅移动指定行的函数? (实际上这与 tab_sort
函数中的 excluded_rows
参数相反)
理想情况下,输出将按如下方式排序:
1+2+3
1+2
1
2
3
4
5+6
5
6
谢谢!
如果您的小计有重叠的项目,您可以使用令人惊讶的命名函数 'hide' 隐藏这些项目。到目前为止,还没有自定义定位小计的功能。然而,我们可以通过一个小技巧得到你想要的输出:
data("infert")
infert$parity = factor(infert$parity)
infert %>%
tab_cells(
subtotal(parity,
"1+2+3"=hide(levels(parity)[1:3]),
"1+2"= levels(parity)[1:2],
"3" = hide(levels(parity)[3]), # to show 3, because "1+2+3" subtotal hide its items
"5+6"=levels(parity)[5:6],
position = "above"
)
) %>%
tab_cols(total()) %>%
tab_stat_cases(label="N", total_row_position="none") %>%
tab_pivot(stat_position="inside_columns")
继今天早些时候遇到的情况之后,又出现了一个与 expss 相关的新问题。 在交叉表创建序列中使用重叠小计会导致重复行,更准确地说,至少在两个不同小计中使用的行。
让我们考虑 infert
数据集来突出这个问题。为了演示,我们将 parity
强制转换为因子。
library(datasets)
infert$parity <- factor(infert$parity)
infert %>%
tab_cells(parity) %>%
tab_subtotal_cells("1+2+3"=levels(parity)[1:3], "1+2"=levels(parity)[1:2],
position = "above") %>%
tab_cols(total()) %>%
tab_stat_cases(label="N", total_row_position="none") %>%
tab_pivot(stat_position="inside_columns")
结果不言自明。尽管我明白为什么会发生这种情况(需要计算每个不同的总数),但我想知道是否有一种聪明的方法来摆脱重复项。
作为一个附属问题,由于小计可以 written/positionned 以多种不同的方式出现,因此输出顺序可能会非常混乱。是否有排序 and/or 仅移动指定行的函数? (实际上这与 tab_sort
函数中的 excluded_rows
参数相反)
理想情况下,输出将按如下方式排序:
1+2+3
1+2
1
2
3
4
5+6
5
6
谢谢!
如果您的小计有重叠的项目,您可以使用令人惊讶的命名函数 'hide' 隐藏这些项目。到目前为止,还没有自定义定位小计的功能。然而,我们可以通过一个小技巧得到你想要的输出:
data("infert")
infert$parity = factor(infert$parity)
infert %>%
tab_cells(
subtotal(parity,
"1+2+3"=hide(levels(parity)[1:3]),
"1+2"= levels(parity)[1:2],
"3" = hide(levels(parity)[3]), # to show 3, because "1+2+3" subtotal hide its items
"5+6"=levels(parity)[5:6],
position = "above"
)
) %>%
tab_cols(total()) %>%
tab_stat_cases(label="N", total_row_position="none") %>%
tab_pivot(stat_position="inside_columns")