1

我想pam使用 R 中的函数执行聚类分析,daisy用于创建相异矩阵。我的数据包含 2 列(ID 和疾病)。两者都是具有很多值的因子(分别为 400 和 1800)。如何创建对数据进行聚类所需的相异矩阵pam

示例数据框:

set.seed(1)
df <- data.frame(ID = rep(sample(c("a","b","c","d","e","f","g"),10,replace = TRUE),70),
                 disease = sample(c("flu","headache","pain","inflammation","depression","infection","chest pain"),100,replace = TRUE))

df <- unique(df)

我可以daisy在此数据帧上运行该函数还是必须将其转换为另一种格式?

4

1 回答 1

2

由于“将在 x 的行之间计算差异”?daisy),您可能希望daisytable您的数据框上运行。

(df.tab <- table(df))
#    disease
# ID  chest pain depression flu headache infection inflammation pain
#   a          1          1   1        1         1            1    1
#   b          1          1   1        1         1            1    1
#   c          1          1   0        0         1            1    1
#   d          1          1   1        0         1            0    1
#   e          0          1   1        1         1            1    0
#   f          0          1   1        1         1            0    1
#   g          1          1   1        1         1            1    0 

library(cluster)    
daisy(df.tab, metric="euclidean")
# Dissimilarities :
#   a        b        c        d        e        f
# b 0.000000                                             
# c 1.414214 1.414214                                    
# d 1.414214 1.414214 1.414214                           
# e 1.414214 1.414214 2.000000 2.000000                  
# f 1.414214 1.414214 2.000000 1.414214 1.414214         
# g 1.000000 1.000000 1.732051 1.732051 1.000000 1.732051
# 
# Metric :  euclidean 
# Number of objects : 7
于 2020-01-21T08:56:45.580 回答