2016-04-19 11 views
0

Ich habe eine df:R: kategorische Daten umformen, die wie eine Korrelationsmatrix sieht

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

Ich möchte eine Matrix als solche schaffen, im Grunde die Anzahl der Paare pro Land Kombination zählen:

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

Ich habe versucht zu verwenden, aber es gibt nicht die gewünschten Ergebnisse.

Table(df$cc,df$pair_no) 

Kann jemand helfen?

+0

von Paaren Sie bedeuten Länder in Zeilen (i, i + 1)? –

+0

@DiegoAgher Paare sind die mit der gleichen Paarnummer – UserYmY

Antwort

2

Sie können versuchen:

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 

Daten

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

Danke Nicola Ich denke, das funktioniert nur für mich, dass ich es in einer Matrixform haben muss, um eine Heatmap danach machen zu können. Können Sie die Antwort ändern, um die Ergebnisse als Matrix zu erhalten? – UserYmY

+0

as.matrix (Tabelle (Daten.Frame (cc1 = df $ cc [c (T, F)], cc2 = df $ cc [c (F, T)]))) –

+1

Eine 'Tabelle' mit zwei Dimensionen * ist * eine Matrix. Wie auch immer, du kannst as.matrix nennen, wie @DiegoAgher vorgeschlagen hat, aber das musst du nicht. – nicola

Verwandte Themen