Как сделать кросс-табуляции в т - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть этот фрейм данных:

ID <- c(1,1,2,3,3,3,4,5,6,6)

linguistic_fluency <- c("good", "very good", "bad", "bad", "very bad", "very good", "good", "very good", "normal", "very bad")

survey_year <- c(2007, 2008, 2009, 2009, 2008, 2007, 2007, 2008, 2007, 2008)

data <- data.frame(ID, linguistic_fluency, survey_year)

Я хотел бы проверить, сообщают ли участники опроса о своей лингвистической беглости в течение многих лет.Поэтому я хотел бы иметь следующую таблицу, где столбец находится в t-1, а строка в t.

enter image description here

Я очень ценю вашу помощь.Спасибо.

1 Ответ

0 голосов
/ 03 декабря 2018

Вы можете отстать от переменной, а затем составить таблицу частот.Например:

# Re-order the factor levels first     
data$linguistic_fluency <- factor(data$linguistic_fluency, 
levels = c("very bad","bad","normal","good","very good"))

library(Hmisc) # load library containing Lag() function

# apply function to each student
data$Lag_fluency <- unlist(tapply(data$linguistic_fluency, data$ID,function(x) Lag(x,1))) 

# resulting in the following data frame. Some respondents only have one observation, 
# the Lag() function returns NA for these respondents
> data
   ID linguistic_fluency survey_year Lag_fluency
1   1               good        2007        <NA>
2   1          very good        2008        good
3   2                bad        2009        <NA>
4   3                bad        2009        <NA>
5   3           very bad        2008         bad
6   3          very good        2007    very bad
7   4               good        2007        <NA>
8   5          very good        2008        <NA>
9   6             normal        2007        <NA>
10  6           very bad        2008      normal

Тогда все, что вам нужно, это таблица частот между исходной и запаздывающей переменной:

> table(data$Lag_fluency, data$linguistic_fluency)

            very bad bad normal good very good
  very bad         0   0      0    0         1
  bad              1   0      0    0         0
  normal           1   0      0    0         0
  good             0   0      0    0         1
  very good        0   0      0    0         0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...