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