Gather

Krzysica Stanisław

2024-03-14

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