Я пытаюсь создать матрицу, используя функцию, которая подсчитывает количество «идентификаторов», которые были в «RATING» i в «YEAR» 1996, а затем перемещены в «RATING» k в «YEAR» 1997, а затем перешел на «РЕЙТИНГ» k в «ГОД» 1998.
Я полагаю, что метки строк матрицы были бы комбинациями "RATING" i и "RATING" j, а метки столбцов матрицы были бы "RATING" k.
Сумма каждой строки должна быть суммой всех "ID", которые были "RATING" i в 1996 году и "RATING" k в 1997 году.
Это мои образцы данных.
df <- rbind(df, data.frame("ID"=c('6387', '6387', '6387', '6403', '6403', '6403', '6408', '6408', '6408', '6411', '6411', '6411', '6413', '6413', '6413', '6422', '6422', '6422', '6427', '6427', '6427')))
df <- cbind(df, data.frame("YEAR"=c('1996', '1997', '1998', '1996', '1997', '1998', '1996', '1997', '1998', '1996', '1997', '1998', '1996', '1997', '1998', '1996', '1997', '1998', '1996', '1997', '1998')))
df <- cbind(df, data.frame("RATING"=c('Aa', 'Ba', 'Ba', 'B', 'Caa', 'Caa', 'A', 'Ba', 'Ba', 'B', 'Ba', 'B', 'B', 'Caa', 'Caa', 'B', 'B', 'B', 'Caa', 'B', 'Caa')))
Используя код, предоставленный @Muffindorf:
df_long <- spread(df, YEAR, RATING)
df_long$c9697 <- paste(df_long$`1996`, df_long$`1997`, sep = '-')
as.matrix(table(df_long$c9697, df_long$`1998`))
дает мне:
A Aa B Ba Caa
A-Ba 0 0 0 1 0
Aa-Ba 0 0 0 1 0
B-B 0 0 1 0 0
B-Ba 0 0 1 0 0
B-Caa 0 0 0 0 2
Caa-B 0 0 0 0 1
Метки строк показывают нам предыдущие рейтинги в 1996 и 1997 годах, метки столбцов показывают нам рейтинг в 1998 году, а элементы сообщают нам количество идентификаторов, которые следовали за переходами.
Теперь мне нужно, чтобы в моих ярлыках строк были все возможные комбинации рейтингов, включая ненаблюдаемые. Приведенный выше код приводит только к меткам строк наблюдаемых комбинаций.