Les gars, je suis nouveau dans ce langage, j'exécute une analyse de cluster sur une trame de données, mais quand je calcule la distance, j'obtiens cet avertissement "NA introduits par coercition". Qu'est-ce que ça veut dire?
d <- dist(as.matrix(mydata1))
Warning message:
In dist(as.matrix(mydata1)) : NAs introduced by coercion
Mon échantillon de données est
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
Dans cette colonne, à l'exception de la métafamille, toutes les colonnes sont de classe numérique.
Les gars, aidez-moi à résoudre ce problème.
C'est cette première colonne qui crée le problème:
> 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
À l'intérieur de dist
, il doit y avoir une coercition sur numérique, ce qui génère l'AN comme ci-dessus.
Je suggérerais d'appliquer dist
sans la première colonne ou mieux de déplacer cela vers rownames
si possible, car le résultat sera différent:
> 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: vous n'avez pas besoin de as.matrix
lors de l'appel dist
. Il le fera de toute façon en interne.
EDIT: utilisation des noms de domaine
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