droplevels() 与 table() 混淆以产生错误的计数

droplevels() messes with table() so as to produce wrong counts

我有一个大数据框,我正在尝试对其进行子集化,然后 table。为了摆脱从超集(原始数据框)继承的未使用级别,我使用 droplevels(),但这不知何故弄乱了 table():

中的计数
#without droplevels()

unknownMun <- table(unknown$MUNICIPALITY_NAME) 
unknownMun <- unknownMun[unknownMun >= 1]

> unknownMun

   Albertslund Kommune        Allerød Kommune       Ballerup Kommune       Bornholm Kommune        Brøndby Kommune         Dragør Kommune         Egedal Kommune 
                14                     32                     88                      9                     30                      3                     18 
 Frederiksberg Kommune  Frederikssund Kommune         Furesø Kommune           Gentofte Kommune       Gladsaxe Kommune       Glostrup Kommune       Gribskov Kommune 
                53                     38                     10                     43                     21                     41                     53 
       Halsnæs Kommune      Helsingør Kommune         Herlev Kommune           Hillerød Kommune       Hvidovre Kommune  Høje-Taastrup Kommune       Hørsholm Kommune 
                80                     23                     46                     35                     22                      2                     70 
Københavns Kommune Lyngby-Taarbæk Kommune      Rudersdal Kommune           
               560                     93                     34  

如果我对 droplevels() 做同样的事情,这就是我得到的:

levels(unknown$MUNICIPALITY_NAME) <- droplevels(unknown$MUNICIPALITY_NAME)

unknownMun <- table(unknown$MUNICIPALITY_NAME)

> unknownMun 

    Københavns Kommune  Frederiksberg Kommune       Glostrup Kommune            Brøndby Kommune        Rødovre Kommune    Albertslund Kommune  Høje-Taastrup Kommune 
                  1440                      0                      0                          0                      0                      0                      0 
  Hvidovre Kommune         Herlev Kommune       Ballerup Kommune         Tårnby Kommune         Dragør Kommune Lyngby-Taarbæk Kommune       Gentofte Kommune 
                 0                      0                      0                      0                      0                      0                      0 
 Rudersdal Kommune       Gladsaxe Kommune       Hørsholm Kommune      Helsingør Kommune       Gribskov Kommune        Halsnæs Kommune       Hillerød Kommune 
                 0                      0                      0                      0                      0                      0                      0 
   Allerød Kommune         Furesø Kommune  Frederikssund Kommune         Egedal Kommune       Bornholm Kommune 
                 0                      0                      0                      0                      0 

谁能解释这里出了什么问题以及如何解决?

我真的更喜欢像 droplevels() 这样的东西,因为当我使用 x[x >= 1] 运算符时 table 的长度不同,我正在尝试比较它们。

应该是

unknown$MUNICIPALITY_NAME <- droplevels(unknown$MUNICIPALITY_NAME)

没有调用左侧的 levels

droplevels 分别适用于 data.framesfactors 而不是 factor.[=16= 的 级别 ]

所以你应该这样做:

unknown$MUNICIPALITY_NAME <- droplevels(unknown$MUNICIPALITY_NAME)

unknown <- droplevels(unknown)