set.seed(123)
library(tidyr)
# 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)
)
task1
set.seed(123)
library(tidyr)
student_data_long <- gather(student_data, exam_type, exam_score, 3:5)
head(student_data_long)
## student_id name exam_type exam_score
## 1 1 Student1 midterm1 90
## 2 2 Student2 midterm1 74
## 3 3 Student3 midterm1 73
## 4 4 Student4 midterm1 62
## 5 5 Student5 midterm1 96
## 6 6 Student6 midterm1 73
task2
set.seed(123)
library(tidyr)
# 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")
)
separated_data_name_age <- separate(student_data2, "name_age", sep="_", c("name", "age"))
separated_data <- separate(separated_data_name_age, "exam_scores", into = c("midterm1", "midterm2", "final"), sep = ",")
long_format_data <- separated_data %>%
pivot_longer(cols = c(midterm1, midterm2, final),
names_to = "exam",
values_to = "score")
long_format_data
## # A tibble: 150 × 5
## student_id name age exam score
## <int> <chr> <chr> <chr> <chr>
## 1 1 John 21 midterm1 midterm1_80
## 2 1 John 21 midterm2 midterm2_85
## 3 1 John 21 final final_75
## 4 2 Alice 20 midterm1 midterm1_75
## 5 2 Alice 20 midterm2 midterm2_78
## 6 2 Alice 20 final final_80
## 7 3 Bob 22 midterm1 midterm1_82
## 8 3 Bob 22 midterm2 midterm2_80
## 9 3 Bob 22 final final_85
## 10 4 Emily 23 midterm1 midterm1_88
## # ℹ 140 more rows
task3
set.seed(123)
library(tidyr)
complete_data <- complete(separated_data, name, age, fill = list(midterm1 = NA, midterm2 = NA, final = NA))
complete_data
## # A tibble: 65 × 6
## name age student_id midterm1 midterm2 final
## <chr> <chr> <int> <chr> <chr> <chr>
## 1 Alice 20 2 midterm1_75 midterm2_78 final_80
## 2 Alice 20 7 midterm1_75 midterm2_78 final_80
## 3 Alice 20 12 midterm1_75 midterm2_78 final_80
## 4 Alice 20 17 midterm1_75 midterm2_78 final_80
## 5 Alice 20 22 midterm1_75 midterm2_78 final_80
## 6 Alice 20 27 midterm1_75 midterm2_78 final_80
## 7 Alice 20 32 midterm1_75 midterm2_78 final_80
## 8 Alice 20 37 midterm1_75 midterm2_78 final_80
## 9 Alice 20 42 midterm1_75 midterm2_78 final_80
## 10 Alice 20 47 midterm1_75 midterm2_78 final_80
## # ℹ 55 more rows
task4
set.seed(123)
library(tidyr)
spread_data <- spread(student_data_long, key = "exam_type", value = "exam_score")
spread_data
## student_id name final midterm1 midterm2
## 1 1 Student1 74 90 74
## 2 2 Student2 83 74 100
## 3 3 Student3 82 73 85
## 4 4 Student4 66 62 90
## 5 5 Student5 88 96 75
## 6 6 Student6 74 73 89
## 7 7 Student7 82 84 65
## 8 8 Student8 85 85 67
## 9 9 Student9 97 86 81
## 10 10 Student10 91 64 81
## 11 11 Student11 66 86 98
## 12 12 Student12 86 87 90
## 13 13 Student13 64 68 76
## 14 14 Student14 65 88 93
## 15 15 Student15 75 94 63
## 16 16 Student16 83 67 72
## 17 17 Student17 91 85 64
## 18 18 Student18 80 66 84
## 19 19 Student19 70 68 81
## 20 20 Student20 95 78 84
## 21 21 Student21 78 95 91
## 22 22 Student22 84 73 84
## 23 23 Student23 98 76 82
## 24 24 Student24 85 98 94
## 25 25 Student25 68 71 99
## 26 26 Student26 66 74 89
## 27 27 Student27 93 91 71
## 28 28 Student28 72 66 90
## 29 29 Student29 78 68 89
## 30 30 Student30 98 100 94
## 31 31 Student31 63 69 73
## 32 32 Student32 60 82 88
## 33 33 Student33 99 86 91
## 34 34 Student34 89 66 66
## 35 35 Student35 89 86 62
## 36 36 Student36 84 91 82
## 37 37 Student37 75 97 74
## 38 38 Student38 83 84 80
## 39 39 Student39 70 93 96
## 40 40 Student40 79 88 67
## 41 41 Student41 99 64 69
## 42 42 Student42 62 67 93
## 43 43 Student43 88 71 69
## 44 44 Student44 95 72 81
## 45 45 Student45 81 77 71
## 46 46 Student46 79 92 79
## 47 47 Student47 70 86 76
## 48 48 Student48 67 84 94
## 49 49 Student49 80 97 99
## 50 50 Student50 61 80 89
task5
set.seed(123)
library(tidyr)
united_data <- unite(separated_data, col = "name_age", name, age, sep = "_")
united_data
## student_id name_age midterm1 midterm2 final
## 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