Как создать матрицу различий с функцией ромашки в R? - PullRequest
1 голос
/ 21 января 2020

Я хочу выполнить кластерный анализ с помощью функции 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 для этого кадра данных или мне нужно преобразовать ее в другой формат?

1 Ответ

1 голос
/ 21 января 2020

Поскольку "Различия будут вычисляться между строками x" (?daisy), вы можете запустить daisy на table вашего фрейма данных.

(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
...