Переменная sub_grp - это просто вектор назначений кластера, поэтому вы можете просто добавить его во фрейм данных:
data(iris) # Data frame available in base R.
str(iris)
d <- dist(iris[, -5]) # Column 5 is the species name so we drop it
hc5 <- hclust(d, method="ward.D2")
sub_grp <- cutree(hc5, k=3)
str(sub_grp)
iris$grp <- sub_grp
str(iris)
aggregate(iris[, 1:4,], by=list(iris$grp), mean)
xtabs(~grp+Species, iris)
Последние две команды вычисляют средние значения по группам для 4 числовых переменных итабулировать кластерные назначения с известными видами. На самом деле вам не нужно добавлять назначение кластера во фрейм данных. R позволяет объединять переменные из разных объектов, если они имеют одинаковое количество строк.