簡體   English   中英

將 data.frame 定義為距離並在 R 中執行層次聚類

[英]define data.frame as a distance and perform hierarchical clustering in R

ggg <- data.frame(row.names=c("a","b","c","d","e"),var1=c("0","0","0","0","0"),var2=c("1","1","1","1","2"))

ggg_dist <- as.matrix(ggg) %>% as.dist(.)

In as.dist.default(.) : non-square matrix

class(ggg_dist)
[1] "dist"

ggg_dist
Warning message:
In df[row(df) > col(df)] <- x :
  number of items to replace is not a multiple of replacement length

 h_ggg <- hclust(ggg_dist,method="average")

Fehler in hclust(ggg_dist, method = "average") : 
  'D' must have length (N \choose 2).

我想用ggg執行層次聚類。 ggg_dist是由ggg制成的class()確認的距離。 我想用ggg_dist進行層次聚類,但這不起作用。 它顯示了上述錯誤。 我該如何解決。

我試過如何將data.frame轉換為距離矩陣進行層次聚類? ,但是當我嘗試調用ggg_dist時得到相同的錯誤。

您可以使用dist分布:

ggg_dist <- dist(ggg, method = "euclidian")

結果:

ggg_dist
  a b c d
b 0      
c 0 0    
d 0 0 0  
e 1 1 1 1

as.dist()需要一個方陣或 data.frame。 您原來的 object ggg有 5 行但只有 2 列。

像下面這樣的東西會起作用。

ggg <- data.frame(row.names = c("a", "b"), 
                  var1 = c("0", "0"), 
                  var2 = c("1", "1"))

ggg_dist <- as.dist(ggg)

h_ggg <- hclust(ggg_dist, method="average")
h_ggg
#> 
#> Call:
#> hclust(d = ggg_dist, method = "average")
#> 
#> Cluster method   : average 
#> Number of objects: 2

代表 package (v0.3.0) 於 2020 年 5 月 27 日創建

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM