set.seed(47)
# Data
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)
)
# Transform data to long format using gather:
student_data_long <- gather(
student_data,
key = "exam",
value = "value",
-student_id,
-name,
na.rm = FALSE,
convert = FALSE,
factor_key = FALSE
)
# Print first few rows:
head(student_data_long)
## student_id name exam value
## 1 1 Student1 midterm1 86
## 2 2 Student2 midterm1 74
## 3 3 Student3 midterm1 79
## 4 4 Student4 midterm1 60
## 5 5 Student5 midterm1 85
## 6 6 Student6 midterm1 72
# Data
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")
)
# Complete missing combinations for students
student_data2 <- separate(student_data2, name_age,
into = c("name", "age"),
sep = "_")
student_data2
## student_id name age exam_scores
## 1 1 John 21 midterm1_80,midterm2_85,final_75
## 2 2 Alice 20 midterm1_75,midterm2_78,final_80
## 3 3 Bob 22 midterm1_82,midterm2_80,final_85
## 4 4 Emily 23 midterm1_88,midterm2_90,final_92
## 5 5 Michael 22 midterm1_85,midterm2_86,final_88
## 6 6 John 21 midterm1_80,midterm2_85,final_75
## 7 7 Alice 20 midterm1_75,midterm2_78,final_80
## 8 8 Bob 22 midterm1_82,midterm2_80,final_85
## 9 9 Emily 23 midterm1_88,midterm2_90,final_92
## 10 10 Michael 22 midterm1_85,midterm2_86,final_88
## 11 11 John 21 midterm1_80,midterm2_85,final_75
## 12 12 Alice 20 midterm1_75,midterm2_78,final_80
## 13 13 Bob 22 midterm1_82,midterm2_80,final_85
## 14 14 Emily 23 midterm1_88,midterm2_90,final_92
## 15 15 Michael 22 midterm1_85,midterm2_86,final_88
## 16 16 John 21 midterm1_80,midterm2_85,final_75
## 17 17 Alice 20 midterm1_75,midterm2_78,final_80
## 18 18 Bob 22 midterm1_82,midterm2_80,final_85
## 19 19 Emily 23 midterm1_88,midterm2_90,final_92
## 20 20 Michael 22 midterm1_85,midterm2_86,final_88
## 21 21 John 21 midterm1_80,midterm2_85,final_75
## 22 22 Alice 20 midterm1_75,midterm2_78,final_80
## 23 23 Bob 22 midterm1_82,midterm2_80,final_85
## 24 24 Emily 23 midterm1_88,midterm2_90,final_92
## 25 25 Michael 22 midterm1_85,midterm2_86,final_88
## 26 26 John 21 midterm1_80,midterm2_85,final_75
## 27 27 Alice 20 midterm1_75,midterm2_78,final_80
## 28 28 Bob 22 midterm1_82,midterm2_80,final_85
## 29 29 Emily 23 midterm1_88,midterm2_90,final_92
## 30 30 Michael 22 midterm1_85,midterm2_86,final_88
## 31 31 John 21 midterm1_80,midterm2_85,final_75
## 32 32 Alice 20 midterm1_75,midterm2_78,final_80
## 33 33 Bob 22 midterm1_82,midterm2_80,final_85
## 34 34 Emily 23 midterm1_88,midterm2_90,final_92
## 35 35 Michael 22 midterm1_85,midterm2_86,final_88
## 36 36 John 21 midterm1_80,midterm2_85,final_75
## 37 37 Alice 20 midterm1_75,midterm2_78,final_80
## 38 38 Bob 22 midterm1_82,midterm2_80,final_85
## 39 39 Emily 23 midterm1_88,midterm2_90,final_92
## 40 40 Michael 22 midterm1_85,midterm2_86,final_88
## 41 41 John 21 midterm1_80,midterm2_85,final_75
## 42 42 Alice 20 midterm1_75,midterm2_78,final_80
## 43 43 Bob 22 midterm1_82,midterm2_80,final_85
## 44 44 Emily 23 midterm1_88,midterm2_90,final_92
## 45 45 Michael 22 midterm1_85,midterm2_86,final_88
## 46 46 John 21 midterm1_80,midterm2_85,final_75
## 47 47 Alice 20 midterm1_75,midterm2_78,final_80
## 48 48 Bob 22 midterm1_82,midterm2_80,final_85
## 49 49 Emily 23 midterm1_88,midterm2_90,final_92
## 50 50 Michael 22 midterm1_85,midterm2_86,final_88