如何使用 r 函数 wtable 在加权表中显示零?

问题描述

我很欣赏 GDAtools 包中的 wtable 函数,例如

GDAtools::wtable(mtcars$cyl,mtcars$gear,weights = mtcars$qsec,stat='freq')
        3     4     5   Sum
4    20,0 156,9  33,6 210,5
6    39,7  70,7  15,5 125,8
8   205,7        29,1      
Sum 265,4        78,2  

但是对于 cyl==8 和 gear==4 组合,这显示空白而不是零。 因此我不能使用 prop 选项:

GDAtools::wtable(mtcars$cyl,stat='prop')
    3 4 5 Sum
4            
6            
8            
Sum   

也不适用于 prop.table:

prop.table(GDAtools::wtable(mtcars$cyl,weights = mtcars$qsec))
    3 4 5 Sum
4            
6            
8            
Sum  

对于没有空格的行和/或列,只有 rprop 和 cprob 有效:

GDAtools::wtable(mtcars$cyl,stat='rprop')
       3    4    5 Sum
4    9,5 74,5 16,0 100
6   31,5 56,2 12,3 100
8     NA   NA   NA  NA
Sum   NA   NA   NA  NA
GDAtools::wtable(mtcars$cyl,stat='cprop')
        3  4     5 Sum
4     7,5 NA  43,0  NA
6    14,9 NA  19,8  NA
8    77,5 NA  37,2  NA
Sum 100,0 NA 100,0  NA

有没有办法在 wtable 中强制为零而不是空白?

解决方法

空白值实际上是以不同方式显示的 NA 值。您可以使用 is.na 捕捉它们。

tab <- GDAtools::wtable(mtcars$cyl,mtcars$gear,weights=mtcars$qsec,stat='freq')
tab[is.na(tab)] <- 0
tab

#        3     4     5   Sum
#4    20.0 156.9  33.6 210.5
#6    39.7  70.7  15.5 125.8
#8   205.7   0.0  29.1   0.0
#Sum 265.4   0.0  78.2   0.0