2015-07-17 2 views
-2

Я думаю, что таблица делает это, но я не могу понять, как.R уменьшите две колонки до таблицы (crosstabulation)

Если у меня есть фрейм данных с несколькими столбцами:

  • Student ID,
  • класса целеуказатель,
  • результаты
  • Среднесрочный,
  • End Term Результаты

и как Результаты среднесрочного периода и результаты Конечного термина имеют фиксированное количество опций, например A, B, C

Как уменьшить это до матрицы 3x3 от среднего срока до конца срока?

т.е. 20 Средние Условия А в результате End Условия 15, 4, 1 и серединой Условия B привело и т.д.

+3

Пожалуйста, включите [mcve] (http://stackoverflow.com/help/mcve). – nrussell

+0

Это называется таблицей или [тегом: кросс-таблица]. Вы хотите таблицу/перекрестную пересылку MidTerm и EndTerm – smci

ответ

1

Это звучит, как вы ищете table функции:

table(dat$Midterm, dat$Endterm) 
#  A B C 
# A 3 2 0 
# B 1 2 1 
# C 0 1 0 

Здесь строки являются среднесрочным классом, а столбцы - классом endterm. Можно также генерировать одну таблицу в классе:

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 
+0

Спасибо, Джослибер, как для переформатирования моего вопроса, так и для ответа. Очень признателен. – Bhanwara

+0

По-видимому, я все еще изучаю, как работает StackOverFlow, а также R, благодаря также Sathya и Deepend. – Bhanwara

Смежные вопросы