当变量是没有NA的因子时,summarytools :: freq会产生意外的结果

时间:2019-06-11 17:21:27

标签: r datatable summarytools

由于我的数据已汇总计数,因此我使用了带有权重的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

1 个答案:

答案 0 :(得分:0)

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

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