-1

私が使用しているデータは以下のように見えます.50000のインスタンスと32の変数があります..多くの変数に欠損値が存在します..申し訳ありませんが、データ全体を投稿できませんでした..

使った

    library(zoo)
    d$V5 <- na.locf(d$V5)

そして、さらにジニ値をチェックしたところ、以下のような出力が得られました

Gini(d$V5)
[1] NA
Warning messages:
1: In sum(x * 1:n) : Integer overflow - use sum(as.numeric(.))
2: In n * sum(x) : NAs produced by integer overflow

しかし、d$V5 は数値である年齢に対応します。目的は、ジニと情報利得を見つけ、決定木をプロットすることでした。欠損値のため、決定木は 1 つに分割されます。したがって、欠損値を埋める必要がありました。データ:

1   022 F   O   044 0       N   31  12  00P         0012    Y   Y   N   Y   0048    731 0.000000    Y   N   0   VERA    LUCIA   N   N   300.000000  0000    00  N   0
2   015 F   S   018 0       Y   31  20  00  P   0216    Y   Y   Y   Y   0012    853 0.000000    Y   N   0   SARA    FELIPE  N   N   300.000000  0000    00  N   0
3   024 F   C   022 0       Y   31  08  00  P   0048    Y   N   Y   Y   0012    040 0.000000    Y   N   0   HELENA  DOMINGOS SOGRA  N   N   229.000000  0000    00  N   0
4   012 F   C   047 0       N   31  25  00  P   0180    Y   Y   N   Y   0024    035 0.000000    Y   N   0   JACI    VALERIA ALEXANDRA TRAJANO   N   N   304.000000  0000    00  N   0
5   016 F   S   028 0       Y   31  25  00  O   0012    Y   Y   Y   Y   0012    024 0.000000    Y   N   0   MARCIA CRISTINA ZANELLA SANDRO L P MARTINS  N   N   250.000000  0000    00  N   0

.....

49998   023 F   S   023 0       Y   31  28  00  P   0264    Y   Y   Y   Y   0012    991 0.000000    Y   N   0   NOVINA  GLAUCIA N   N   240.000000  0000    00  N   1
49999   009 F   C   038 0       Y   5   28  00  P   0048    Y   Y   Y   Y   0204    040 0.000000    Y   N   0   LILIANE FIGUEIREDO  MIRNA CARVALHO NASCIMENTO   N   N   616.000000  0000    00  N   0
50000   022 M   S   029 0       Y   31  23  00  P   0048    Y   Y   N   Y   0036    026 0.000000    Y   N   0   TITO MARTINS        N   N   341.000000  0000    00  N   0
4

1 に答える 1

4

取得しているエラーは、欠損値とは関係ありません (独自の問題がある場合とない場合があります)。次のようにして簡単に再現できます。

sum(1:100000)
#[1] NA
#Warning message:
#In sum(1:1e+05) : integer overflow - use sum(as.numeric(.))

また、double に変換することで回避することもできます。

sum(as.numeric(1:100000))
#[1] 5000050000

そうする

d$V5 = as.numeric(d$V5)

そしてそこから取ります。

于 2013-06-19T16:27:38.567 に答える