我认为这样做了,但我无法弄清楚如何。
如果我有一个包含多列的数据框:
并且中期结果和结束期限结果都有固定数量的选项,例如A,B,C
如何将此缩减为中期与结束期限的3x3矩阵?
即。 20个中期条款导致结束条款15,4,1和B中期条款等等。
答案 0 :(得分:1)
听起来你正在寻找table
功能:
table(dat$Midterm, dat$Endterm)
# A B C
# A 3 2 0
# B 1 2 1
# C 0 1 0
这里,行是期中成绩,列是期末成绩。您还可以为每个类生成一个表:
lapply(split(dat, dat$Class), function(x) table(x$Midterm, x$Endterm))
# $`1`
#
# A B C
# A 2 1 0
# B 0 0 1
# C 0 1 0
#
# $`2`
#
# A B C
# A 1 1 0
# B 1 2 0
# C 0 0 0
数据:
set.seed(144)
(dat <- data.frame(StudentID=sample(1:1000, 10), Class=sample(1:2, 10, replace=TRUE), Midterm=sample(c("A", "B", "C"), 10, replace=TRUE), Endterm=sample(c("A", "B", "C"), 10, replace=TRUE)))
# StudentID Class Midterm Endterm
# 1 50 2 A B
# 2 707 1 A A
# 3 726 2 B A
# 4 500 1 B C
# 5 317 1 A A
# 6 636 1 C B
# 7 36 2 A A
# 8 724 2 B B
# 9 78 2 B B
# 10 815 1 A B