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.frames
和 factors
而不是 factor
.[=16= 的 级别 ]
所以你应该这样做:
unknown$MUNICIPALITY_NAME <- droplevels(unknown$MUNICIPALITY_NAME)
或
unknown <- droplevels(unknown)
我有一个大数据框,我正在尝试对其进行子集化,然后 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.frames
和 factors
而不是 factor
.[=16= 的 级别 ]
所以你应该这样做:
unknown$MUNICIPALITY_NAME <- droplevels(unknown$MUNICIPALITY_NAME)
或
unknown <- droplevels(unknown)