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

问题描述 投票:1回答:2

我有一个大数据框,我正在尝试子集,然后表。为了摆脱从超集(原始数据框)继承的未使用的级别,我使用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()be之类的东西,因为当我使用x[x >= 1]operator并且我试图比较它们时,表格会有不同的长度。

r dataframe subset r-factor r-table
2个回答
1
投票

droplevels分别在data.framesfactors上工作,而不是在factor的水平上。

所以你应该这样做:

unknown$MUNICIPALITY_NAME <- droplevels(unknown$MUNICIPALITY_NAME)

要么

unknown <- droplevels(unknown)

1
投票

那应该是

unknown$MUNICIPALITY_NAME <- droplevels(unknown$MUNICIPALITY_NAME)

没有在左侧调用levels

© www.soinside.com 2019 - 2024. All rights reserved.