2013-10-08 3 views
7

Ragazzi Sono nuovo in questa lingua, eseguo l'analisi del cluster su un frame di dati ma quando calcoli la distanza ottengo questo avviso "NA introdotti per coercizione". Cosa significa questo?"NA introdotte per coercizione" durante l'analisi cluster in R

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

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

mio campione di dati è

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 

In questo oltre a colonna Metafamily tutte le colonne sono numeriche in classe.

Ragazzi, per favore aiutatemi da questo numero.

risposta

13

È che prima colonna che crea il problema:

> 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 

All'interno dist ci deve essere una costrizione a numerico, che genera la NA come sopra.

avrei suggerimento di applicare dist senza la prima colonna o meglio mossa che a rownames, se possibile, perché il risultato sarà diverso:

> 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 

btw: non è necessario quando si chiama as.matrixdist. Lo farà comunque internamente.

EDIT: usando rownames

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 
+0

@ Michele - grazie :) – Ravee

+0

@Ravee siete i benvenuti. per favore controlla la modifica con l'uso di 'rownames' – Michele