【问题标题】:"NAs introduced by coercion" during Cluster Analysis in RR中的聚类分析期间的“强制引入的NAs”
【发布时间】:2013-10-15 05:36:32
【问题描述】:

伙计们,我是这种语言的新手,我正在对数据框进行聚类分析,但是当我计算距离时,我收到“强制引入的 NAs”警告。这是什么意思?

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 列之外,所有列都是类中的数字。

请大家帮我解决这个问题。

【问题讨论】:

    标签: r cluster-analysis


    【解决方案1】:

    正是第一列造成了问题:

    > 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
    

    顺便说一句:调用dist 时不需要as.matrix。无论如何它都会在内部这样做。

    编辑:使用行名

    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
    

    【讨论】:

    • @Michele - 谢谢 :)
    • @Ravee 不客气。请使用rownames 用法检查编辑
    猜你喜欢
    • 1970-01-01
    • 2016-06-29
    • 2020-11-06
    • 1970-01-01
    • 2013-02-28
    • 1970-01-01
    • 2019-01-27
    相关资源
    最近更新 更多