Question: I have two dendrograms which I wish to compare to each other in order to find out how "similar" they are. But I don't know of any method to do so (let alone a code to implement it, say, in R).

Any leads ?

**UPDATE** (2014-09-13):

Since asking this question, I have written an R package called [dendextend](http://cran.r-project.org/web/packages/dendextend/), for the visualization, manipulation and **comparison** of dendrogram. This package is on [CRAN](http://cran.r-project.org/web/packages/dendextend/) and comes with a [detailed vignette](http://cran.r-project.org/web/packages/dendextend/vignettes/introduction.html). It includes functions such as `cor_cophenetic`, `cor_bakers_gamma` and `Bk` / `Bk_plot`. As well as a `tanglegram` function for visually comparing two trees.

Answer: 
have a look at [this page](http://r.789695.n4.nabble.com/How-to-Compare-Two-dendrograms-Hierarchical-Clusterings-td1563467.html): 

I also have similar question asked [here](https://stackoverflow.com/questions/25799921/which-r-function-to-calculate-cophenetic-correlation)

It seems we can use cophenetic correlation to measure the similarity between two dendrograms. But there seems no function for this purpose in R currently.

**EDIT at 2014,9,18:**
 The `cophenetic` function in `stats` package is capable to calculating the cophenetic dissimilarity matrix. and the correlation can be calculated using `cor` function. as @Tal has pointed the `as.dendrogram` function returned the tree with different order, which will cause wrong results if we calculate the correlation based on the dendrogram results. As showed in the example of function `cor_cophenetic` function in `dendextend` package:

```
set.seed(23235)
ss <- sample(1:150, 10 )
hc1 <- iris[ss,-5] %>% dist %>% hclust("com")
hc2 <- iris[ss,-5] %>% dist %>% hclust("single")
dend1 <- as.dendrogram(hc1)
dend2 <- as.dendrogram(hc2)
# cutree(dend1)
cophenetic(hc1)
cophenetic(hc2)
# notice how the dist matrix for the dendrograms have different orders:
cophenetic(dend1)
cophenetic(dend2)
cor(cophenetic(hc1), cophenetic(hc2)) # 0.874
cor(cophenetic(dend1), cophenetic(dend2)) # 0.16
# the difference is becasue the order of the distance table in the case of
# stats:::cophenetic.dendrogram will change between dendrograms!

```
There is a rich body of literature for tree distance metrics in the phylogenetics community that seems to have been neglected from the computer science perspective. See [`dist.topo`](http://www.inside-r.org/packages/cran/ape/docs/dist.topo) of the `ape` package for two tree distance metrics and several citations (Penny and Hardy 1985, Kuhner and Felsenstein 1994) which considering the similarity of tree partitions, and also the [Robinson-Foulds metric](https://en.wikipedia.org/wiki/Robinson%E2%80%93Foulds_metric) which has an R implementation in the [`phangorn`](http://www.inside-r.org/packages/cran/phangorn/docs/treedist) package.

One problem is that these metrics don't have a fixed scale, so they are only useful in the cases of 1) tree comparison or 2) comparison to some generated baseline, perhaps via [permutation tests similar to what Tal has done with Baker's Gamma](https://cran.r-project.org/web/packages/dendextend/vignettes/introduction.html#correlation-measures) in his fantastic dendextend package.

If you have hclust or dendrogram objects generated from `R` hierarchical clustering, using `as.phylo` from the `ape` package will convert your dendrograms to phylogenetic trees for usage in these functions.