Ich versuche, eine Lookup-Tabelle aus einer tatsächlichen Entfernungsmatrix für US-Postleitzahlen mit dem GoogleMaps-Modell zu erstellen, das auf Lars Relund Nielsens webpage gezeigt wird. Die Postleitzahlen im Nordosten der USA beginnen mit einer "0" und werden daher fallengelassen, wenn reshape2 die Matrix von breit zu lang konvertiert, wie auf seiner Seite beschrieben.Verhindern, dass reshape2 Spaltenüberschriften in Zahlen umwandelt
Beispiel Matrix von Entfernungen (km) zwischen 5 Postleitzahlen:
mdat <- matrix(c(0.000, 113.288, 145.986, 126.271, 368.354
,103.988, 0.000, 69.637, 49.922, 294.386
,144.851, 69.285, 0.000, 25.547, 244.024
,124.531, 48.965, 25.245, 0.000, 258.729
,368.346, 295.159, 243.478, 258.598, 0.000)
, nrow = 5
, ncol = 5
, byrow = TRUE,
dimnames = list(c("01014", "01747", "02144", "02453", "04040"),
c("01014", "01747", "02144", "02453", "04040")))
Looks like this (all well and good);
# 01014 01747 02144 02453 04040
#01014 0.000 113.288 145.986 126.271 368.354
#01747 103.988 0.000 69.637 49.922 294.386
#02144 144.851 69.285 0.000 25.547 244.024
#02453 124.531 48.965 25.245 0.000 258.729
#04040 368.346 295.159 243.478 258.598 0.000
Aber wenn ich die Matrix zu einer Lookup-Tabelle neu zu gestalten wandelt es die Zeile/Spalte-Namen zu einer Zahl, die die führenden Null aus der Zip-dropping Code.
#reshape into a table of distances
library(reshape2)
dat<-(melt(mdat))
dat
colnames(dat)<-c("from","to","km")
head(dat)
from to km
1 1014 1014 0.000
2 1747 1014 103.988
3 2144 1014 144.851
4 2453 1014 124.531
5 4040 1014 368.346
6 1014 1747 113.288
Ich hoffe zu bekommen;
from to km
1 01014 01014 0.000
2 01747 01014 103.988
3 02144 01014 144.851
4 02453 01014 124.531
5 04040 01014 368.346
6 01014 01747 113.288
Irgendwelche Gedanken darüber, wie ich reshape2 von der Umwandlung der Postleitzahlen in eine Nummer halten kann?
@Imo - Wenn ich Ihren Vorschlag in meinem Beispiel ausgeführt habe, scheint dies nicht zu funktionieren, die "0" ist immer noch in der "dat" -Datei gelöscht..Thinkets? - Vielleicht gibt es einen anderen Weg, ohne Umformung2 - Ich bin für Vorschläge? –
@RobertWhite Sind Sie sicher? Ich habe den gleichen Code (Kopieren und Einfügen Ihrer mdat Matrix-Code und dann meine Daten Schmelzcode) auf zwei verschiedenen Maschinen und erhalten die führenden Nullen auf beiden. – lmo
@Imo - interessant, wenn ich es in Rstudio führe es entfernt die führende "0", aber wenn in R - es funktioniert! ... Ich wusste nicht, und ich hätte wahrscheinlich Rstudio in meiner Frage, da war ein Unterschied? –