2016-10-13 7 views
1

Ich versuche, eine matric mit R nach dem folgenden Beispiel zu tun:Matrix mit R: Spaltennamen

> dput(a) 
structure(list(from = c("City1", "City2", "City3", "City4", "City5", 
"City1", "City2", "City3", "City4", "City5", "City1", "City2", 
"City3", "City4", "City5", "City1", "City2", "City3", "City4", 
"City5", "City1", "City2", "City3", "City4", "City5"), to = c("City1", 
"City1", "City1", "City1", "City1", "City2", "City2", "City2", 
"City2", "City2", "City3", "City3", "City3", "City3", "City3", 
"City4", "City4", "City4", "City4", "City4", "City5", "City5", 
"City5", "City5", "City5"), N = c(0L, 4L, 2L, 4L, 0L, 4L, 0L, 
0L, 1L, 3L, 1L, 2L, 0L, 2L, 0L, 2L, 0L, 2L, 0L, 3L, 1L, 3L, 1L, 
2L, 0L)), .Names = c("from", "to", "N"), row.names = c(NA, -25L 
), class = c("data.table", "data.frame"), .internal.selfref = <pointer: 0x00000000001c0788>) 

Ich würde eine einfache matric gerne mit

from N.City1 N.City2 N.City3 N.City4 N.City5 
1: City1   
2: City2   
3: City3  COUNT OF OCCURENCES 
4: City4   
5: City5  

ich mit bekommen kann: final <- reshape(a,idvar="from",timevar="to",direction="wide")

> final 
    from N.City1 N.City2 N.City3 N.City4 N.City5 
1: City1  0  4  1  2  1 
2: City2  4  0  2  0  3 
3: City3  2  0  0  2  1 
4: City4  4  1  2  0  2 
5: City5  0  3  0  3  0 

Aber die Spaltennamen sind sehr seltsam. Mit habe ich "N." vor jeder Spalte Namen? Ich könnte gsub() verwenden, um es zu entfernen, aber ist es möglich, einen besseren Weg zu haben?

Vielen Dank!

Antwort

1

Wir können dies tun, einfach mit dcast von data.table

library(data.table) 
dcast(a, from ~to, value.var = "N") 
# from City1 City2 City3 City4 City5 
#1: City1  0  4  1  2  1 
#2: City2  4  0  2  0  3 
#3: City3  2  0  0  2  1 
#4: City4  4  1  2  0  2 
#5: City5  0  3  0  3  0 
+0

Wir waren gerade sie, gab es schon die Antwort online ... Dank! – Floni