Carga de los datos

library(readr)
EmojisFood <- read_csv("EmojisFood")
str(EmojisFood)
## tibble [58 x 35] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ name                   : chr [1:58] "grapes" "melon" "watermelon" "tangerine" ...
##  $ emoji                  : chr [1:58] "<U+0001F347>" "<U+0001F348>" "<U+0001F349>" "<U+0001F34A>" ...
##  $ Calories (kcal)        : num [1:58] 0.69 0.28 0.3 0.53 0.29 0.89 0.5 0.63 0.58 0.57 ...
##  $ Carbohydrates (g)      : num [1:58] 0.181 0.0658 0.0755 0.1334 0.0932 ...
##  $ Total Sugar (g)        : num [1:58] 0.1548 0.0569 0.062 0.1058 0.025 ...
##  $ Protein (g)            : num [1:58] 0.0072 0.0111 0.0061 0.0081 0.011 0.0109 0.0054 0.002 0.0044 0.0036 ...
##  $ Total Fat (g)          : num [1:58] 0.0016 0.001 0.0015 0.0031 0.003 0.0033 0.0012 0.0018 0.0019 0.0014 ...
##  $ Saturated Fat (g)      : num [1:58] 0.00054 0.00025 0.00016 0.00039 0.00039 0.00112 0.00009 0 0 0.00022 ...
##  $ Monounsaturated Fat (g): num [1:58] 0.00007 0.00002 0.00037 0.0006 0.00011 0.00032 0.00013 0 0 0.00084 ...
##  $ Polyunsaturated Fat (g): num [1:58] 0.00048 0.00039 0.0005 0.00065 0.00089 0.00073 0.0004 0 0 0.00094 ...
##  $ Total Fiber (g)        : num [1:58] 0.009 0.009 0.004 0.018 0.028 0.026 0.014 0.021 0.028 0.031 ...
##  $ Cholesterol (mg)       : num [1:58] 0 0 0 0 0 0 0 0 0 0 ...
##  $ Vitamin B6 (mg)        : num [1:58] 0.00086 0.00163 0.00045 0.00078 0.0008 0.00367 0.00112 0.00045 0.00037 0.00029 ...
##  $ Vitamin A (IU)         : num [1:58] 0.66 0 5.69 6.81 0.22 0.64 0.58 0.38 1 0.25 ...
##  $ Vitamin B12 (ug)       : num [1:58] 0 0 0 0 0 0 0 0 0 0 ...
##  $ Vitamin C (mg)         : num [1:58] 0.032 0.218 0.081 0.267 0.53 0.087 0.478 0 0 0.043 ...
##  $ Vitamin D (IU)         : num [1:58] 0 0 0 0 0 0 0 0 0 0 ...
##  $ Vitamin E (IU)         : num [1:58] 0.0019 0.0005 0.0005 0.002 0.0015 0.001 0.0002 0.0018 0.0018 0.0012 ...
##  $ Vitamin K (ug)         : num [1:58] 0.146 0.025 0.001 0 0 0.005 0.007 0.01 0.032 0.044 ...
##  $ Thiamin (mg)           : num [1:58] 0.00069 0.00015 0.00033 0.00058 0.0004 0.00031 0.00079 0.00013 0.00019 0.00012 ...
##  $ Riboflavin (mg)        : num [1:58] 0.0007 0.00031 0.00021 0.00036 0.0002 0.00073 0.00032 0.00026 0.00025 0.00026 ...
##  $ Niacin (mg)            : num [1:58] 0.00188 0.00232 0.00178 0.00376 0.001 0.00665 0.005 0.0007 0.00126 0.00161 ...
##  $ Folate (ug)            : num [1:58] 0.02 0.08 0.03 0.16 0.11 0.2 0.18 0.03 0.03 0.07 ...
##  $ Pantothenic Acid (mg)  : num [1:58] 0.0005 0.00084 0.00221 0.00216 0.0019 0.00334 0.00213 0.00051 0.00056 0.00049 ...
##  $ Choline (mg)           : num [1:58] 0.056 0.076 0.041 0.102 0.051 0.098 0.055 0.034 0.034 0.051 ...
##  $ Calcium (g)            : num [1:58] 0.1 0.11 0.07 0.37 0.26 0.05 0.13 0.07 0.05 0.09 ...
##  $ Copper (mg)            : num [1:58] 0.00127 0.0006 0.00042 0.00042 0.00037 0.00078 0.0011 0.00025 0.00031 0.00082 ...
##  $ Iron (mg)              : num [1:58] 0.0036 0.0034 0.0024 0.0015 0.006 0.0026 0.0029 0.001 0.0015 0.0018 ...
##  $ Magnesium (mg)         : num [1:58] 0.07 0.11 0.1 0.12 0.08 0.27 0.12 0.05 0.05 0.07 ...
##  $ Manganese (mg)         : num [1:58] 0.00071 0.00035 0.00038 0.00039 0.0003 0.0027 0.00927 0.00031 0.00044 0.00048 ...
##  $ Phosphorus (g)         : num [1:58] 0.2 0.05 0.11 0.2 0.16 0.22 0.08 0.13 0.12 0.12 ...
##  $ Potassium (g)          : num [1:58] 1.91 1.82 1.12 1.66 1.38 3.58 1.09 1.09 1.2 1.16 ...
##  $ Selenium (ug)          : num [1:58] 0.001 0.004 0.004 0.001 0.004 0.01 0.001 0 0.001 0.001 ...
##  $ Sodium (g)             : num [1:58] 0.02 0.09 0.01 0.02 0.02 0.01 0.01 0.01 0.01 0.01 ...
##  $ Zinc (mg)              : num [1:58] 0.0007 0.0007 0.001 0.0007 0.0006 0.0015 0.0012 0.0004 0.0004 0.001 ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   name = col_character(),
##   ..   emoji = col_character(),
##   ..   `Calories (kcal)` = col_double(),
##   ..   `Carbohydrates (g)` = col_double(),
##   ..   `Total Sugar (g)` = col_double(),
##   ..   `Protein (g)` = col_double(),
##   ..   `Total Fat (g)` = col_double(),
##   ..   `Saturated Fat (g)` = col_double(),
##   ..   `Monounsaturated Fat (g)` = col_double(),
##   ..   `Polyunsaturated Fat (g)` = col_double(),
##   ..   `Total Fiber (g)` = col_double(),
##   ..   `Cholesterol (mg)` = col_double(),
##   ..   `Vitamin B6 (mg)` = col_double(),
##   ..   `Vitamin A (IU)` = col_double(),
##   ..   `Vitamin B12 (ug)` = col_double(),
##   ..   `Vitamin C (mg)` = col_double(),
##   ..   `Vitamin D (IU)` = col_double(),
##   ..   `Vitamin E (IU)` = col_double(),
##   ..   `Vitamin K (ug)` = col_double(),
##   ..   `Thiamin (mg)` = col_double(),
##   ..   `Riboflavin (mg)` = col_double(),
##   ..   `Niacin (mg)` = col_double(),
##   ..   `Folate (ug)` = col_double(),
##   ..   `Pantothenic Acid (mg)` = col_double(),
##   ..   `Choline (mg)` = col_double(),
##   ..   `Calcium (g)` = col_double(),
##   ..   `Copper (mg)` = col_double(),
##   ..   `Iron (mg)` = col_double(),
##   ..   `Magnesium (mg)` = col_double(),
##   ..   `Manganese (mg)` = col_double(),
##   ..   `Phosphorus (g)` = col_double(),
##   ..   `Potassium (g)` = col_double(),
##   ..   `Selenium (ug)` = col_double(),
##   ..   `Sodium (g)` = col_double(),
##   ..   `Zinc (mg)` = col_double()
##   .. )

Preparación de la Data para el dendrograma

summary(EmojisFood)
##      name              emoji           Calories (kcal) Carbohydrates (g)
##  Length:58          Length:58          Min.   :0.010   Min.   :0.00000  
##  Class :character   Class :character   1st Qu.:0.540   1st Qu.:0.06822  
##  Mode  :character   Mode  :character   Median :1.395   Median :0.16070  
##                                        Mean   :1.920   Mean   :0.23736  
##                                        3rd Qu.:2.735   3rd Qu.:0.30090  
##                                        Max.   :8.980   Max.   :0.98000  
##  Total Sugar (g)    Protein (g)       Total Fat (g)      Saturated Fat (g)  
##  Min.   :0.00000   Min.   :0.000000   Min.   :0.000000   Min.   :0.0000000  
##  1st Qu.:0.00000   1st Qu.:0.006825   1st Qu.:0.001825   1st Qu.:0.0002275  
##  Median :0.03080   Median :0.020050   Median :0.007250   Median :0.0008450  
##  Mean   :0.08027   Mean   :0.050148   Mean   :0.084650   Mean   :0.0279357  
##  3rd Qu.:0.09440   3rd Qu.:0.069000   3rd Qu.:0.125875   3rd Qu.:0.0382100  
##  Max.   :0.82120   Max.   :0.274800   Max.   :0.995000   Max.   :0.3199100  
##  Monounsaturated Fat (g) Polyunsaturated Fat (g) Total Fiber (g)  
##  Min.   :0.000000        Min.   :0.00000         Min.   :0.00000  
##  1st Qu.:0.000115        1st Qu.:0.00053         1st Qu.:0.00000  
##  Median :0.001075        Median :0.00263         Median :0.01300  
##  Mean   :0.033566        Mean   :0.01470         Mean   :0.01712  
##  3rd Qu.:0.047095        3rd Qu.:0.01634         3rd Qu.:0.02600  
##  Max.   :0.414350        Max.   :0.15558         Max.   :0.10000  
##  Cholesterol (mg) Vitamin B6 (mg)     Vitamin A (IU)     Vitamin B12 (ug) 
##  Min.   :0.0000   Min.   :0.0000000   Min.   :  0.0000   Min.   :0.00000  
##  1st Qu.:0.0000   1st Qu.:0.0004425   1st Qu.:  0.0125   1st Qu.:0.00000  
##  Median :0.0000   Median :0.0006150   Median :  0.6100   Median :0.00000  
##  Mean   :0.1774   Mean   :0.0012533   Mean   :  7.6895   Mean   :0.00196  
##  3rd Qu.:0.1625   3rd Qu.:0.0011175   3rd Qu.:  1.5725   3rd Qu.:0.00160  
##  Max.   :1.2700   Max.   :0.0075800   Max.   :192.1800   Max.   :0.03060  
##  Vitamin C (mg)    Vitamin D (IU)     Vitamin E (IU)     Vitamin K (ug)   
##  Min.   :0.00000   Min.   :0.000000   Min.   :0.000000   Min.   :0.00000  
##  1st Qu.:0.00000   1st Qu.:0.000000   1st Qu.:0.000000   1st Qu.:0.00000  
##  Median :0.00450   Median :0.000000   Median :0.001650   Median :0.00950  
##  Mean   :0.10309   Mean   :0.008793   Mean   :0.004828   Mean   :0.03960  
##  3rd Qu.:0.06425   3rd Qu.:0.000000   3rd Qu.:0.005850   3rd Qu.:0.04625  
##  Max.   :1.43700   Max.   :0.290000   Max.   :0.083300   Max.   :0.40300  
##   Thiamin (mg)       Riboflavin (mg)      Niacin (mg)        Folate (ug)    
##  Min.   :0.0000000   Min.   :0.0000000   Min.   :0.000000   Min.   :0.0000  
##  1st Qu.:0.0002475   1st Qu.:0.0002525   1st Qu.:0.001653   1st Qu.:0.0525  
##  Median :0.0005750   Median :0.0005900   Median :0.006950   Median :0.1700  
##  Mean   :0.0011545   Mean   :0.0010841   Mean   :0.015799   Mean   :0.2907  
##  3rd Qu.:0.0014325   3rd Qu.:0.0018575   3rd Qu.:0.018107   3rd Qu.:0.4175  
##  Max.   :0.0071000   Max.   :0.0042700   Max.   :0.120660   Max.   :2.4000  
##  Pantothenic Acid (mg)  Choline (mg)     Calcium (g)      Copper (mg)       
##  Min.   :0.000000      Min.   :0.0000   Min.   :0.0000   Min.   :0.0000400  
##  1st Qu.:0.000720      1st Qu.:0.0250   1st Qu.:0.0700   1st Qu.:0.0003875  
##  Median :0.002645      Median :0.0680   Median :0.1500   Median :0.0007750  
##  Mean   :0.003723      Mean   :0.1560   Mean   :0.5391   Mean   :0.0011453  
##  3rd Qu.:0.004707      3rd Qu.:0.1835   3rd Qu.:0.4975   3rd Qu.:0.0012850  
##  Max.   :0.017670      Max.   :1.2840   Max.   :8.9000   Max.   :0.0114400  
##    Iron (mg)        Magnesium (mg)   Manganese (mg)      Phosphorus (g)  
##  Min.   :0.000000   Min.   :0.0000   Min.   :0.0000000   Min.   :0.0100  
##  1st Qu.:0.002525   1st Qu.:0.1000   1st Qu.:0.0004025   1st Qu.:0.2000  
##  Median :0.004350   Median :0.1350   Median :0.0013700   Median :0.4750  
##  Mean   :0.009779   Mean   :0.2362   Mean   :0.0029674   Mean   :0.8922  
##  3rd Qu.:0.014375   3rd Qu.:0.2700   3rd Qu.:0.0031600   3rd Qu.:1.2275  
##  Max.   :0.045800   Max.   :1.6800   Max.   :0.0407100   Max.   :5.7400  
##  Potassium (g)   Selenium (ug)      Sodium (g)      Zinc (mg)       
##  Min.   :0.050   Min.   :0.0000   Min.   :0.000   Min.   :0.000100  
##  1st Qu.:1.130   1st Qu.:0.0020   1st Qu.:0.020   1st Qu.:0.001050  
##  Median :1.595   Median :0.0095   Median :0.135   Median :0.003500  
##  Mean   :1.926   Mean   :0.0710   Mean   :1.480   Mean   :0.007134  
##  3rd Qu.:2.305   3rd Qu.:0.0960   3rd Qu.:2.138   3rd Qu.:0.006775  
##  Max.   :7.050   Max.   :0.3040   Max.   :8.970   Max.   :0.046900
#Se deben normalizar los datos 
EmojiNorm <- scale(EmojisFood[c(3:35)])
summary(EmojiNorm)
##  Calories (kcal)   Carbohydrates (g) Total Sugar (g)     Protein (g)     
##  Min.   :-1.0639   Min.   :-1.0219   Min.   :-0.53076   Min.   :-0.7405  
##  1st Qu.:-0.7687   1st Qu.:-0.7282   1st Qu.:-0.53076   1st Qu.:-0.6398  
##  Median :-0.2925   Median :-0.3300   Median :-0.32710   Median :-0.4445  
##  Mean   : 0.0000   Mean   : 0.0000   Mean   : 0.00000   Mean   : 0.0000  
##  3rd Qu.: 0.4538   3rd Qu.: 0.2736   3rd Qu.: 0.09345   3rd Qu.: 0.2784  
##  Max.   : 3.9322   Max.   : 3.1973   Max.   : 4.89934   Max.   : 3.3174  
##  Total Fat (g)     Saturated Fat (g) Monounsaturated Fat (g)
##  Min.   :-0.5343   Min.   :-0.5029   Min.   :-0.4936        
##  1st Qu.:-0.5228   1st Qu.:-0.4988   1st Qu.:-0.4919        
##  Median :-0.4885   Median :-0.4877   Median :-0.4778        
##  Mean   : 0.0000   Mean   : 0.0000   Mean   : 0.0000        
##  3rd Qu.: 0.2602   3rd Qu.: 0.1850   3rd Qu.: 0.1989        
##  Max.   : 5.7458   Max.   : 5.2561   Max.   : 5.5993        
##  Polyunsaturated Fat (g) Total Fiber (g)   Cholesterol (mg)  
##  Min.   :-0.48592        Min.   :-0.8385   Min.   :-0.54253  
##  1st Qu.:-0.46840        1st Qu.:-0.8385   1st Qu.:-0.54253  
##  Median :-0.39896        Median :-0.2018   Median :-0.54253  
##  Mean   : 0.00000        Mean   : 0.0000   Mean   : 0.00000  
##  3rd Qu.: 0.05455        3rd Qu.: 0.4349   3rd Qu.:-0.04561  
##  Max.   : 4.65856        Max.   : 4.0590   Max.   : 3.34109  
##  Vitamin B6 (mg)    Vitamin A (IU)    Vitamin B12 (ug)   Vitamin C (mg)   
##  Min.   :-0.81610   Min.   :-0.2333   Min.   :-0.39416   Min.   :-0.4132  
##  1st Qu.:-0.52795   1st Qu.:-0.2329   1st Qu.:-0.39416   1st Qu.:-0.4132  
##  Median :-0.41563   Median :-0.2148   Median :-0.39416   Median :-0.3951  
##  Mean   : 0.00000   Mean   : 0.0000   Mean   : 0.00000   Mean   : 0.0000  
##  3rd Qu.:-0.08841   3rd Qu.:-0.1856   3rd Qu.:-0.07245   3rd Qu.:-0.1557  
##  Max.   : 4.11979   Max.   : 5.5979   Max.   : 5.75848   Max.   : 5.3463  
##  Vitamin D (IU)    Vitamin E (IU)     Vitamin K (ug)      Thiamin (mg)    
##  Min.   :-0.2218   Min.   :-0.41123   Min.   :-0.56700   Min.   :-0.7580  
##  1st Qu.:-0.2218   1st Qu.:-0.41123   1st Qu.:-0.56700   1st Qu.:-0.5955  
##  Median :-0.2218   Median :-0.27068   Median :-0.43099   Median :-0.3805  
##  Mean   : 0.0000   Mean   : 0.00000   Mean   : 0.00000   Mean   : 0.0000  
##  3rd Qu.:-0.2218   3rd Qu.: 0.08709   3rd Qu.: 0.09516   3rd Qu.: 0.1825  
##  Max.   : 7.0921   Max.   : 6.68453   Max.   : 5.20270   Max.   : 3.9035  
##  Riboflavin (mg)    Niacin (mg)       Folate (ug)      Pantothenic Acid (mg)
##  Min.   :-1.0235   Min.   :-0.7268   Min.   :-0.7362   Min.   :-0.8894      
##  1st Qu.:-0.7851   1st Qu.:-0.6508   1st Qu.:-0.6032   1st Qu.:-0.7173      
##  Median :-0.4665   Median :-0.4071   Median :-0.3056   Median :-0.2574      
##  Mean   : 0.0000   Mean   : 0.0000   Mean   : 0.0000   Mean   : 0.0000      
##  3rd Qu.: 0.7301   3rd Qu.: 0.1062   3rd Qu.: 0.3211   3rd Qu.: 0.2353      
##  Max.   : 3.0077   Max.   : 4.8244   Max.   : 5.3418   Max.   : 3.3322      
##   Choline (mg)      Calcium (g)        Copper (mg)         Iron (mg)      
##  Min.   :-0.6944   Min.   :-0.43652   Min.   :-0.68044   Min.   :-0.8899  
##  1st Qu.:-0.5831   1st Qu.:-0.37984   1st Qu.:-0.46652   1st Qu.:-0.6601  
##  Median :-0.3917   Median :-0.31507   Median :-0.22798   Median :-0.4940  
##  Mean   : 0.0000   Mean   : 0.00000   Mean   : 0.00000   Mean   : 0.0000  
##  3rd Qu.: 0.1226   3rd Qu.:-0.03371   3rd Qu.: 0.08597   3rd Qu.: 0.4182  
##  Max.   : 5.0225   Max.   : 6.76942   Max.   : 6.33731   Max.   : 3.2778  
##  Magnesium (mg)    Manganese (mg)     Phosphorus (g)    Potassium (g)    
##  Min.   :-0.7685   Min.   :-0.49738   Min.   :-0.8269   Min.   :-1.3421  
##  1st Qu.:-0.4432   1st Qu.:-0.42991   1st Qu.:-0.6489   1st Qu.:-0.5695  
##  Median :-0.3293   Median :-0.26775   Median :-0.3911   Median :-0.2368  
##  Mean   : 0.0000   Mean   : 0.00000   Mean   : 0.0000   Mean   : 0.0000  
##  3rd Qu.: 0.1100   3rd Qu.: 0.03228   3rd Qu.: 0.3142   3rd Qu.: 0.2711  
##  Max.   : 4.6976   Max.   : 6.32613   Max.   : 4.5439   Max.   : 3.6656  
##  Selenium (ug)       Sodium (g)        Zinc (mg)       
##  Min.   :-0.7164   Min.   :-0.6320   Min.   :-0.68967  
##  1st Qu.:-0.6962   1st Qu.:-0.6234   1st Qu.:-0.59653  
##  Median :-0.6205   Median :-0.5743   Median :-0.35633  
##  Mean   : 0.0000   Mean   : 0.0000   Mean   : 0.00000  
##  3rd Qu.: 0.2522   3rd Qu.: 0.2810   3rd Qu.:-0.03524  
##  Max.   : 2.3510   Max.   : 3.1993   Max.   : 3.89868
#Asignamos el nombre de las filas 
rownames(EmojiNorm)<-EmojisFood$name

#Calculamos las distancias entre los elementos
EmojiDistancias <-dist(EmojiNorm)
#No se pueden calcular distancias con datos que no son numericos, por eso se seleccionan solo las columnas numericas

#Agrupamiento jerarquico 
clusters <- hclust(EmojiDistancias)

#clusters$order #Elementos ordenador de mayor a meno
#clusters$high #las alturas del dendograma definido por las distancias 

Dendrograma

library(ggdendro)
dendrograma<-ggdendrogram(clusters)
dendrograma

Dendrograma con los nombres y los emojis

library(stringi)

#Funcion para adicionar datos de labels
trimEmojiCode <- function (df,order) {
    for(i in 1:nrow(df)){
      index<-order[i]
      df[index,3]<-order[i]
      tmp<-strsplit(stringi::stri_escape_unicode(df[index,2]),"\\\\U000")
      df[i,4]<-tmp[[1]][2]
    }
colnames(df)<-c('name','emoji','id','code')
return (df)
}

labels<-trimEmojiCode(EmojisFood[,c(1,2)],clusters$order)

library(ggplot2)
library(httr)
library(ggimage)
dendrograma <- ggdendrogram (clusters, size=1.5)
dendrograma <- dendrograma + geom_emoji(data=labels, aes(id,-1,image=code),size=0.02)
dendrograma <- dendrograma + geom_hline(yintercept=13, color="red")
dendrograma <- dendrograma + annotate("text", label="corte", x=0, y=14, color="red")
dendrograma

Dendrograma con solo los emojis

#Se deben normalizar los datos 
EmojiNorm <- scale(EmojisFood[c(3:35)])

#Asignamos el nombre de las filas 
rownames(EmojiNorm)<-EmojisFood$emoji

#Calculamos las distancias entre los elementos
EmojiDistancias <-dist(EmojiNorm)

#Agrupamiento jerarquico 
clusters <- hclust(EmojiDistancias)

dendrograma<-ggdendrogram(clusters)
dendrograma