我有一个大数据框,我正在尝试子集然后表。为了摆脱从超集(原始数据框)继承的未使用的级别,我使用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]
运算符并且我试图比较它们时,表格会有不同的长度。
答案 0 :(得分:1)
那应该是
unknown$MUNICIPALITY_NAME <- droplevels(unknown$MUNICIPALITY_NAME)
没有左侧的levels
。
答案 1 :(得分:1)
droplevels
分别适用于data.frames
和factors
,而不适用于factor
的级别。
所以你应该这样做:
unknown$MUNICIPALITY_NAME <- droplevels(unknown$MUNICIPALITY_NAME)
或
unknown <- droplevels(unknown)