2016-04-19 5 views
0

У меня есть ДФ:R: перекроить категорические данные, что выглядит как корреляционная матрица

cc pair_no 
US 1 
US 1 
DE 2 
UK 2 
US 3 
PL 3 
US 4 
US 4 

Я хотел бы создать матрицу, как, например, в основном, чтобы подсчитать количество пара в комбинации страны:

US UK PL DE 
US 2 
UK 0 0 
PL 1 0 0 
DE 0 1 0 0 

Я пробовал использовать, но он не дает желаемых результатов.

Table(df$cc,df$pair_no) 

Может ли кто-нибудь помочь?

+0

парами вы имеете в виду страны в строках (I, I + 1)? –

+0

пары @DiegoAgher - те, у которых одинаковое число пар – UserYmY

ответ

2

Вы можете попробовать:

table(data.frame(cc1=df$cc[c(TRUE,FALSE)],cc2=df$cc[c(FALSE,TRUE)])) 
# cc2 
#cc1 DE PL UK US 
# DE 0 0 1 0 
# PL 0 0 0 0 
# UK 0 0 0 0 
# US 0 1 0 2 

данных

df<-structure(list(cc = structure(c(4L, 4L, 1L, 3L, 4L, 2L, 4L, 4L 
), .Label = c("DE", "PL", "UK", "US"), class = "factor"), pair_no = c(1L, 
1L, 2L, 2L, 3L, 3L, 4L, 4L)), .Names = c("cc", "pair_no"), class = "data.frame", row.names = c(NA, 
-8L)) 
+0

Спасибо nicola Я думаю, что это работает для меня только потому, что мне нужно иметь его в матричной форме, чтобы потом сделать тепловую карту. Можете ли вы изменить ответ, чтобы дать результаты в виде матрицы? – UserYmY

+0

as.matrix (таблица (data.frame (cc1 = df $ cc [c (T, F)], cc2 = df $ cc [c (F, T)]))) –

+1

«таблица» с двумя измерениями * является * матрицей. В любом случае, вы можете вызвать 'as.matrix', как предлагал @DiegoAgher, но вам не нужно. – nicola

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