Data Wrangling Raport

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_data1 <- gather(student_data, "exam", "score")

head(student_data)
##   student_id     name midterm1 midterm2 final
## 1          1 Student1       97       87    95
## 2          2 Student2       61       87    96
## 3          3 Student3       93       94    60
## 4          4 Student4       88       74    65
## 5          5 Student5       89       94    67
## 6          6 Student6      100       90    82
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
set.seed(7)
library(tidyr)

# Data
student_data <- 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_data <- complete(student_data, fill = list(name_age = NA, exam_scores = "midterm1_NA,midterm2_NA,final_NA"), explicit = TRUE)

# View the updated dataset
print(student_data)
##    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
set.seed (9)
library(tidyr)
# Data
student_data <- 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")
)
#Transform data to wide format

student_data <- separate(student_data, name_age, into = c("name", "age"), sep = "_")
student_data <- separate_rows(student_data, exam_scores, sep = ",")
student_data <- separate(student_data, exam_scores, into = c("exam", "score"), sep = "_")

wide_student_data <- spread(student_data, key = exam, value = score)


print(wide_student_data)
## # A tibble: 50 × 6
##    student_id name    age   final midterm1 midterm2
##         <int> <chr>   <chr> <chr> <chr>    <chr>   
##  1          1 John    21    75    80       85      
##  2          2 Alice   20    80    75       78      
##  3          3 Bob     22    85    82       80      
##  4          4 Emily   23    92    88       90      
##  5          5 Michael 22    88    85       86      
##  6          6 John    21    75    80       85      
##  7          7 Alice   20    80    75       78      
##  8          8 Bob     22    85    82       80      
##  9          9 Emily   23    92    88       90      
## 10         10 Michael 22    88    85       86      
## # ℹ 40 more rows
set.seed(1)
library(tidyr)

# Data
student_data <- 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_data <- separate(student_data, name_age, into = c("name", "age"), sep = "_")
# Merge variables name and age to one column called name_age
student_data_5 <- unite(student_data, name_age, name, age, sep = "_")
print(student_data_5)
##    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