summarytools::freq 当变量是没有 NA 的因子时会给出意想不到的结果

summarytools::freq gives unintended results when variables are factors without NA

由于我的数据汇总了计数,因此我使用带有权重的 summmarytools 中的 freq 函数。

有了权重,freq 函数在

时可以很好地汇总列
  1. 该列是数字或整数
  2. 列是具有 NA 或 NaN 值的因子

但是当

  1. 该列是一个没有 NA 或 NaN 值的因子,然后摘要从该列中取出一个级别并以 NA 显示它!!

我在一个实际案例中遇到过这个问题,并复制了一个样本。

     library(data.table)
     library(summarytools)
     dt <- data.table(A= as.integer( c(5,3,4,5,6,1,2,NA,3,NaN)),
             B= c(5,3,4,5,6,1,2,NA,3,NaN),
             C=as.factor( c(5,3,4,5,6,1,2,NA,3,NA)),
             D=as.factor( c(5,3,4,5,6,1,2,NaN,3,NaN)),
             E=as.factor( c(5,3,4,5,6,1,2,5,3,3)),

             Frequency=c(10,20,30,40,5,60,7,80,99,10)
           )
     str(dt)

频率是整数还是数字都没有关系

如果我们有一个没有 Nan 或 NA 值的因子,它会有所不同

writeLines("\n\n\n Without weights: No errors")
#summarytools::freq(dt[,1:5]) #Commented to minimize clutter
writeLines("\n\n\n With weights, Column E shows incorrect values but not C and D")
summarytools::freq(dt[,1:5],weights=dt$Frequency)



 Without weights: No errors



 With weights, Column E shows incorrect values but not C and D
 1 NaN value(s) converted to NA

 0 NaN value(s) converted to NA

 Weighted Frequencies  
 dt$A  
 Weights: weights  

            Freq   % Valid   % Valid Cum.   % Total   % Total Cum.

      1    60.00     22.14          22.14     16.62          16.62
      2     7.00      2.58          24.72      1.94          18.56
      3   119.00     43.91          68.63     32.96          51.52
      4    30.00     11.07          79.70      8.31          59.83
      5    50.00     18.45          98.15     13.85          73.68
      6     5.00      1.85         100.00      1.39          75.07
   <NA>    90.00                              24.93         100.00
  Total   361.00    100.00         100.00    100.00         100.00

dt$B
类型:数值

            Freq   % Valid   % Valid Cum.   % Total   % Total Cum.

      1    60.00     22.14          22.14     16.62          16.62
      2     7.00      2.58          24.72      1.94          18.56
      3   119.00     43.91          68.63     32.96          51.52
      4    30.00     11.07          79.70      8.31          59.83
      5    50.00     18.45          98.15     13.85          73.68
      6     5.00      1.85         100.00      1.39          75.07
   <NA>    90.00                              24.93         100.00
  Total   361.00    100.00         100.00    100.00         100.00

dt$C
类型:因子

            Freq   % Valid   % Valid Cum.   % Total   % Total Cum.

      1    60.00     22.14          22.14     16.62          16.62
      2     7.00      2.58          24.72      1.94          18.56
      3   119.00     43.91          68.63     32.96          51.52
      4    30.00     11.07          79.70      8.31          59.83
      5    50.00     18.45          98.15     13.85          73.68
      6     5.00      1.85         100.00      1.39          75.07
   <NA>    90.00                              24.93         100.00
  Total   361.00    100.00         100.00    100.00         100.00

dt$D
类型:因子

            Freq   % Valid   % Valid Cum.   % Total   % Total Cum.

      1    60.00     22.14          22.14     16.62          16.62
      2     7.00      2.58          24.72      1.94          18.56
      3   119.00     43.91          68.63     32.96          51.52
      4    30.00     11.07          79.70      8.31          59.83
      5    50.00     18.45          98.15     13.85          73.68
      6     5.00      1.85         100.00      1.39          75.07
   <NA>    90.00                              24.93         100.00
  Total   361.00    100.00         100.00    100.00         100.00

dt$E
类型:因子

            Freq   % Valid   % Valid Cum.   % Total   % Total Cum.

      1    60.00     16.85          16.85     16.62          16.62
      2     7.00      1.97          18.82      1.94          18.56
      3   129.00     36.24          55.06     35.73          54.29
      4    30.00      8.43          63.48      8.31          62.60
      5   130.00     36.52         100.00     36.01          98.61
   <NA>     5.00                               1.39         100.00
  Total   361.00    100.00         100.00    100.00         100.00

已为此发布修复程序。您可以使用 GitHub 安装最新版本: devtools::install_github("dcomtois/summarytools")

或者,获取最新的开发版本:
devtools::install_github("dcomtois/summarytools", ref = "dev-current)