みんな私はこの言語を初めて使います。データフレームでクラスター分析を実行していますが、距離を計算すると、「強制によって導入された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列とは別に、すべての列がクラスの数値です。
みんな、この問題から私を助けてください。
問題を作成するのはその最初の列です。
> 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