10

私はこの言語を初めて使用しますが、データフレームでクラスター分析を実行していますが、距離を計算すると、「強制によって導入されたNA」という警告が表示されます。これは何を意味するのでしょうか?

d <- dist(as.matrix(mydata1))

  Warning message:
In dist(as.matrix(mydata1)) : NAs introduced by coercion

私のデータサンプルは

Metafamily     Total         July cpc      July cse_pla    July offline   July organic  
xerox 8560     275.829417    0.20943223    0.032628862     0.169210813    0.1130048 
office-supplie  246.9125664  0.057833047   0.020209909     0.535358617    0.136165617

この Metafamily 列とは別に、すべての列はクラス内の数値です。

みんな、この問題から私を助けてください。

4

1 に答える 1

15

問題を作成するのはその最初の列です。

> a <- c("1", "2",letters[1:5], "3")
> as.numeric(a)
[1]  1  2 NA NA NA NA NA  3
Warning message:
NAs introduced by coercion 

内部distでは、上記のように NA を生成する数値への強制が必要です。

結果が異なるため、dist最初の列なしで適用するか、可能であればそれを移動することをお勧めします。rownames

> dist(df)
          1         2         3         4
2 1.8842186                              
3 1.9262360 1.2856110                    
4 3.2137871 1.7322788 2.9838920          
5 1.3299455 0.9872963 1.9158079 1.8889050
Warning message:
In dist(df) : NAs introduced by coercion
> dist(df[-1])
         1        2        3        4
2 1.538458                           
3 1.572765 1.049697                  
4 2.624046 1.414400 2.436338         
5 1.085896 0.806124 1.564251 1.542284

as.matrixところで:呼び出すときは必要ありませんdist。とにかく内部的にそれを行います。

編集: 行名の使用

rownames(df) <- df$id

> df
  id       var1       var2
A  A -0.6264538 -0.8204684
B  B  0.1836433  0.4874291
C  C -0.8356286  0.7383247
D  D  1.5952808  0.5757814
E  E  0.3295078 -0.3053884

> dist(df[-1]) # you colud also remove the 1st col at all, using df$id <- NULL.
         A        B        C        D
B 1.538458                           
C 1.572765 1.049697                  
D 2.624046 1.414400 2.436338         
E 1.085896 0.806124 1.564251 1.542284
于 2013-10-08T10:47:25.950 に答える