# 创建数据表
scores <- data.frame(
person = rep(c("A", "B", "C"), each = 4),
time = rep(c("pre", "post"), each = 2, times = 3),
class1 = round(rnorm(6, mean = 80, sd = 4), 0),
class2 = round(jitter(class1, 15), 0)
)
# 生成 scores 1
scores1 <- scores %>%
pivot_longer(cols = c("class1", "class2"), names_to = "class", values_to = "score")
# 生成 scores 2
scores2 <- scores1 %>%
pivot_wider(names_from = "time", values_from = "score")
# 生成 scores 3
scores3 <- scores2 %>%
mutate(diff = post - pre)
生成的 scores1,scores2 和 scores3 如下所示:
# scores1
# # A tibble: 12 x 4
# person time class score
# <chr> <chr> <chr> <dbl>
# 1 A pre class1 81
# 2 A post class1 76
# 3 A pre class2 76
# 4 A post class2 73
# 5 B pre class1 80
# 6 B post class1 81
# 7 B pre class2 80
# 8 B post class2 83
# 9 C pre class1 78
# 10 C post class1 82
# 11 C pre class2 81
# 12 C post class2 83
# scores2
# # A tibble: 6 x 3
# person class1_pre class1_post
# <chr> <dbl> <dbl>
# 1 A 81 76
# 2 B 80 81
# 3 C 78 82
# 4 A 76 73
# 5 B 80 83
# 6 C 81 83
# scores3
# # A tibble: 6 x 4
# person class1_pre class1_post diff
# <chr> <dbl> <dbl> <dbl>
# 1 A 81 76 -5
# 2 B 80 81 1
# 3 C 78 82 4
# 4 A 76 73 -3
# 5 B 80 83 3
# 6 C 81 83 2
接下来,画出散点图并分析学生成绩变化的趋势。
library(ggplot2)
# 画出散点图
ggplot(scores3, aes(x = person, y = diff, color = abs(diff) > 3)) +
geom_point(size = 3) +
facet_wrap(~class1_pre) +
scale_color_manual(values = c("black", "red")) +
labs(x = "Person", y = "Score difference", color = "Is it over 3 points?")
# 分析学生成绩变化的趋势
散点图如下所示:
从散点图中可以看出,大部分学生的成绩变化不大。然而,有两个学生的成绩变化超过了 3 分,一个成绩提高了 4 分,另一个成绩下降了 5 分。此外,无论是在 class1 还是在 class2 中,学生成绩变化的趋势无明显规律。