gpt4 book ai didi

r - 在 R 中创建子矩阵后,为什么 str() 显示因子级别的信息不正确?

转载 作者:行者123 更新时间:2023-12-03 18:18:15 26 4
gpt4 key购买 nike

我在 R 中有以下数据框,有 274569 行和 15 列:

> str(x2)
'data.frame': 274569 obs. of 15 variables:
$ ykod : int 99 99 99 99 99 99 99 99 99 99 ...
$ yad : Factor w/ 43 levels "BAKUGAN","BARBIE",..: 2 2 2 2 2 2 2 2 2 2 ...
$ per : Factor w/ 3 levels "2 AYLIK","3 AYLIK",..: 3 3 3 3 3 3 3 3 3 3 ...
$ donem: int 201106 201106 201106 201106 201106 201106 201106 201106 201106 201106 ...
$ sayi : int 201106 201106 201106 201106 201106 201106 201106 201106 201106 201106 ...
$ mkod : int 359 361 362 363 366 847 849 850 1505 1506 ...
$ mad : Factor w/ 11045 levels " Hilal Gida ",..: 5163 3833 10840 8284 10839 2633 10758 10293 6986 6984 ...
$ mtip : Factor w/ 30 levels "Abone Bürosu ",..: 20 20 20 20 20 2 2 2 11 11 ...
$ kanal: Factor w/ 2 levels "OB","SS": 2 2 2 2 2 2 2 2 1 1 ...
$ bkod : int 110006 110006 110006 110006 110006 110006 110006 110006 110006 110006 ...
$ bad : Factor w/ 213 levels "4. Levent","500 Evler",..: 25 25 25 25 25 25 25 25 25 25 ...
$ bolge: Factor w/ 12 levels "Adana Şehiriçi",..: 7 7 7 7 7 7 7 7 7 7 ...
$ sevk : int 5 2 2 2 10 0 4 3 13 32 ...
$ iade : int 0 2 1 2 4 0 3 2 0 8 ...
$ satis: int 5 0 1 0 6 0 1 1 13 24 ...

我创建一个子矩阵并显示其结构:
> msub <- x2[x2$ykod == 99,]
> str(msub)
'data.frame': 14367 obs. of 15 variables:
$ ykod : int 99 99 99 99 99 99 99 99 99 99 ...
$ yad : Factor w/ 43 levels "BAKUGAN","BARBIE",..: 2 2 2 2 2 2 2 2 2 2 ...
$ per : Factor w/ 3 levels "2 AYLIK","3 AYLIK",..: 3 3 3 3 3 3 3 3 3 3 ...
$ donem: int 201106 201106 201106 201106 201106 201106 201106 201106 201106 201106 ...
$ sayi : int 201106 201106 201106 201106 201106 201106 201106 201106 201106 201106 ...
$ mkod : int 359 361 362 363 366 847 849 850 1505 1506 ...
$ mad : Factor w/ 11045 levels " Hilal Gida ",..: 5163 3833 10840 8284 10839 2633 10758 10293 6986 6984 ...
$ mtip : Factor w/ 30 levels "Abone Bürosu ",..: 20 20 20 20 20 2 2 2 11 11 ...
$ kanal: Factor w/ 2 levels "OB","SS": 2 2 2 2 2 2 2 2 1 1 ...
$ bkod : int 110006 110006 110006 110006 110006 110006 110006 110006 110006 110006 ...
$ bad : Factor w/ 213 levels "4. Levent","500 Evler",..: 25 25 25 25 25 25 25 25 25 25 ...
$ bolge: Factor w/ 12 levels "Adana Şehiriçi",..: 7 7 7 7 7 7 7 7 7 7 ...
$ sevk : int 5 2 2 2 10 0 4 3 13 32 ...
$ iade : int 0 2 1 2 4 0 3 2 0 8 ...
$ satis: int 5 0 1 0 6 0 1 1 13 24 ...

现在我有一个 14367 行和 15 列的子矩阵,但因子的水平仍然存在。他们应该减少。例如,对于 yad ,应该只有一个因素。

我怎样才能轻松地让 str() 显示因子水平的正确信息,以便当我输入 str(msub) 时它会给出正确的值?

最佳答案

这是预期的行为。在您的子集中没有表示的因子水平不会“消失”,直到您告诉它们。最近,您可以使用 droplevels() .

关于r - 在 R 中创建子矩阵后,为什么 str() 显示因子级别的信息不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7737438/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com