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

时间:2015-07-28 08:45:41

标签: r dataframe subset r-factor r-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]运算符并且我试图比较它们时,表格会有不同的长度。

2 个答案:

答案 0 :(得分:1)

那应该是

unknown$MUNICIPALITY_NAME <- droplevels(unknown$MUNICIPALITY_NAME)

没有左侧的levels

答案 1 :(得分:1)

droplevels分别适用于data.framesfactors,而不适用于factor级别

所以你应该这样做:

unknown$MUNICIPALITY_NAME <- droplevels(unknown$MUNICIPALITY_NAME)

unknown <- droplevels(unknown)