set.seed(20)


library(tidyr)

student_data <- data.frame(
  student_id = 1:50,
  name = paste0("Student", 1:50),
  midterm1 = sample(60:100, 50, replace = TRUE),
  midterm2 = sample(60:100, 50, replace = TRUE),
  final = sample(60:100, 50, replace = TRUE)
)



student_data <- gather(student_data, "exam", "score")

head(student_data)
##         exam score
## 1 student_id     1
## 2 student_id     2
## 3 student_id     3
## 4 student_id     4
## 5 student_id     5
## 6 student_id     6
set.seed(30)


library(tidyr)

student_data2 <- data.frame(
  student_id = 1:50,
  name_age = c("John_21", "Alice_20", "Bob_22", "Emily_23", "Michael_22"),
  exam_scores = c("midterm1_80,midterm2_85,final_75", "midterm1_75,midterm2_78,final_80", "midterm1_82,midterm2_80,final_85", "midterm1_88,midterm2_90,final_92", "midterm1_85,midterm2_86,final_88")
)

student_data2 <- separate(student_data2, "name_age", c("name", "age"), sep="_") 
student_data2 <- separate(student_data2, "exam_scores", c("midterm1", "midterm2", "final"), sep=",")

student_data2 <- separate(student_data2, midterm1, into = c("midterm1", "midterm1_score"), sep = "_")
student_data2 <- separate(student_data2, midterm2, into = c("midterm2", "midterm2_score"), sep = "_")
student_data2 <- separate(student_data2, final, into = c("final", "final_score"), sep = "_")

student_data2 <- student_data2[, !names(student_data2) %in% "midterm1"]
student_data2 <- student_data2[, !names(student_data2) %in% "midterm2"]
student_data2 <- student_data2[, !names(student_data2) %in% "final"]

student_data2 <- gather(student_data2, "exam_type", "score")

head(student_data2)
##    exam_type score
## 1 student_id     1
## 2 student_id     2
## 3 student_id     3
## 4 student_id     4
## 5 student_id     5
## 6 student_id     6