Uni <- read.csv('Universities and Colleges.csv')






Uni$College.Name <- as.factor(Uni$College.Name)

Uni <- subset(Uni, select = -c(College.Name))


rownames(Uni) <- Uni$ID



hc <- hclust(dist(Uni))


cluster_labels <- cutree(hc, k=5)


Uni$Cluster <- cluster_labels


cluster_nd <- Uni$Cluster[Uni$College.Name == "University of Notre Dame"]
cluster_nd
## integer(0)
average_tuition <- aggregate(Instate.Tuition ~ Cluster, data = Uni, FUN = mean)


cluster_highest <- average_tuition$Cluster[which.max(average_tuition$Instate.Tuition)]
cluster_highest
## [1] 3
cluster_1 <- Uni[Uni$Cluster == 1, ]


average_acceptance_rate <- mean(cluster_1$Acceptance.Rate)


average_acceptance_rate <- round(average_acceptance_rate, 2)

average_acceptance_rate
## [1] 78.73
num_schools_cluster_4 <- sum(Uni$Cluster == 4)

num_schools_cluster_4
## [1] 36
set.seed(1234)



kmeans_result <- kmeans(scale(Uni[, -1]), centers = 5)


Uni$Cluster <- kmeans_result$cluster


cluster_nd <- Uni$Cluster[Uni$College.Name == "University of Notre Dame"]
cluster_nd
## integer(0)
average_tuition <- aggregate(Instate.Tuition ~ Cluster, data = Uni, FUN = mean)


cluster_highest <- average_tuition$Cluster[which.max(average_tuition$Instate.Tuition)]
cluster_highest
## [1] 5
cluster_1 <- Uni[Uni$Cluster == 1, ]


average_acceptance_rate <- mean(cluster_1$Acceptance.Rate)

average_acceptance_rate
## [1] 77.80567
num_schools_cluster_4 <- sum(Uni$Cluster == 4)

num_schools_cluster_4
## [1] 232
library(ggplot2)


wcss <- numeric(length = 10)
for (i in 1:10) {
  kmeans_result <- kmeans(scale(Uni[, -1]), centers = i)
  wcss[i] <- kmeans_result$tot.withinss
}


elbow_data <- data.frame(K = 1:10, WCSS = wcss)
ggplot(elbow_data, aes(x = K, y = WCSS)) +
  geom_line() +
  geom_point() +
  labs(x = "Number of Clusters (K)", y = "Within-Cluster Sum of Squares (WCSS)",
       title = "Elbow Method for Optimal K in K-means Clustering")