2015-07-28 1 views
1

J'ai un grand cadre de données que j'essaie de sous-ensembles, puis de table. Afin de se débarrasser des niveaux inutilisés hérités du surensemble (la trame de données d'origine), j'utilise droplevels(), mais ce mess en quelque sorte les chefs d'accusation en table():droplevels() avec mess() afin de produire des comptes erronés

#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 

Si je fais la même chose avec droplevels(), c'est ce que je reçois:

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 

Quelqu'un peut-il expliquer ce qui ne va pas ici et comment le réparer?

Je préfère vraiment quelque chose comme droplevels() parce que les tables ont des longueurs différentes lorsque j'utilise l'opérateur x[x >= 1] et j'essaie de les comparer.

Merci!

Répondre

1

droplevels travaux sur data.frames et factors respectivement pas sur les niveaux du factor.

Vous devez soit faire:

unknown$MUNICIPALITY_NAME <- droplevels(unknown$MUNICIPALITY_NAME) 

ou

unknown <- droplevels(unknown) 
1

Ce devrait être

unknown$MUNICIPALITY_NAME <- droplevels(unknown$MUNICIPALITY_NAME) 

sans appel à levels sur le côté gauche.