Ich arbeite mit dem HURDAT-Dataset, um Hurrikan-Tracks zu plotten. Ich habe derzeit ein SpatialPointsDataFrame Objekt in R erzeugt, 2004.Convert SpatialPointsDataFrame in SpatialLinesDataFrame in R
> str(cluster.2004.sdf)
Formal class 'SpatialPointsDataFrame' [package "sp"] with 5 slots
[email protected] data :'data.frame': 2693 obs. of 4 variables:
.. ..$ Sid : int [1:2693] 1331 1331 1331 1331 1331 1331 1331 1331 1331 1331 ...
.. ..$ clusterid: num [1:2693] 2 2 2 2 2 2 2 2 2 2 ...
.. ..$ name : Factor w/ 269 levels "","ABBY ",..: 6 6 6 6 6 6 6 6 6 6 ...
.. ..$ WmaxS : num [1:2693] 78.9 82.8 80.9 70.9 76.9 ...
[email protected] coords.nrs : num(0)
[email protected] coords : num [1:2693, 1:2] 754377 612852 684956 991386 819565 ...
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : NULL
.. .. ..$ : chr [1:2] "lon" "lat"
[email protected] bbox : num [1:2, 1:2] -3195788 1362537 4495870 9082812
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : chr [1:2] "lon" "lat"
.. .. ..$ : chr [1:2] "min" "max"
[email protected] proj4string:Formal class 'CRS' [package "sp"] with 1 slots
.. .. [email protected] projargs: chr "+proj=lcc +lat_1=60 +lat_2=30 +lon_0=-60 +ellps=WGS84"
> summary(cluster.2004.sdf)
Object of class SpatialPointsDataFrame
Coordinates:
min max
lon -3195788 4495870
lat 1362537 9082812
Is projected: TRUE
proj4string :
[+proj=lcc +lat_1=60 +lat_2=30 +lon_0=-60 +ellps=WGS84]
Number of points: 2693
Data attributes:
Sid clusterid name WmaxS
Min. :1331 Min. :1.000 IVAN :517 Min. : 14.83
1st Qu.:1334 1st Qu.:2.000 FRANCES :403 1st Qu.: 31.35
Median :1337 Median :3.000 JEANNE :379 Median : 50.04
Mean :1337 Mean :2.898 KARL :283 Mean : 61.66
3rd Qu.:1339 3rd Qu.:4.000 DANIELLE :271 3rd Qu.: 90.40
Max. :1341 Max. :4.000 BONNIE :253 Max. :142.52
(Other) :587
Jeder Sturm für das Jahr ungefähr so aussieht hat eine eindeutige ID Referenz Sturm der Bezeichnung „Sid“. Ich möchte den SpatialPointsDataFrame mit dem "Sid" gruppieren und alle Punkte in eine Linie umwandeln.
Ich habe mit ddply aus dem plyr-Paket, aber ehrlich gesagt keine Ahnung, was ich tue. Ich weiß, dass ich dies tun kann, indem ich jede Zeile im Datenrahmen umschlinge und Koordinaten an eine Liste angehängt und diese Liste dann mit der Funktion Linien aus dem Paket sp umwandle.
Allerdings würde ich lieber eine mehr R Art der Konvertierung. Dank Richard
All „R Wege“ letztlich mit einer Liste beschäftigen , aber Sie können split (x, id) als Start verwenden. Wichtiger ist, ob Sie einfache (wahrscheinlich) oder komplexe Linien wollen. Sie möchten eine Datenzeile mit Attributen für jede eindeutige ID? (einfach) – mdsumner