2016-05-22 5 views
1

Ich versuche, durch die folgenden Beispielwerte zu gruppieren,Ersatz x Reihen hat, Daten hat y - Paste() Funktion

Breite | Länge | TotalGreenhouseGases | Betrag | Zweig | Enddatum
-37.80144 | 144.95402 | 42965.9868 | 32549.99 | Kunst und Kultur | 31.07.2013 00:00:00
-37.80144 | 144.95402 | 43246.6716 | 32762.63 | Kunst und Kultur | 30.08.2013 12:00:00
-37.80144 | 144.95402 | 21374.1264 | 16192.52 | Kunst und Kultur | 2013.09.31 12.00.00

mapdata <- aggregate(cbind(TotalGreenhouseGases,Amount) ~ latitude+longitude,data = dt2,FUN=function(dt2) c(mn =sum(dt2), n=length(dt2))) 

163 obs. und 4 Variablen werden als Ergebnis erstellt, jetzt ist es plotten in einer Karte mithilfe von plot.ly ich versuche, einen Text für Schweben hinzufügen,

mapdata$hover <- paste(mapdata$TotalGreenhouseGases, "CO2 Emission ",'<br>', "Resource Consumption ", mapdata$Amount) 

aber dies führt zu dem folgenden Fehler,

Error in `$<-.data.frame`(`*tmp*`, "hover", value = c("264.06428571 CO2 Emission <br> Resource Consumption 200", : 
replacement has 326 rows, data has 163 

kann mir jemand sagen, wo ich falsch liege oder wenn es vorher gelöst wurde, kannst du bitte einen Link dafür angeben.

+0

Könnten Sie bitte die Ausgabe von 'str (mapdata)' zur Verfügung stellen? – FlorianSchunke

+0

Ich bekomme folgende 'data.frame': \t 163 obs. von 4 Variablen: $ latitude: num -37.8 -37.8 -37.8 -37.8 -37.8 ... $ Längengrad: num 145 145 145 145 145 ... $ TotalGreenhouseGases: num [1: 163, 1: 2] 264 1616 30480 0 3186 ... ..- attr (*, "dimnames") = Liste von 2 .. .. $: NULL .. .. $: chr "mn" "n" $ Anzahl: num [1: 163, 1: 2] 200 1223 23085 4659 2410 ... ..- attr (*, "dimnames") = Liste von 2 .. .. $: NULL .. .. $: chr " mn "" n " –

+1

So weit wie ich sehen kann sowohl die TotalGreenH ... Und die Amount-Spalte hat Dimension 2, daher ist Ihre Ausgabe der Paste Anruf 2 * 163. Haben Sie versucht, die Pastenausgabe einer neuen Variablen zuzuweisen und deren Länge zu überprüfen? – FlorianSchunke

Antwort

2

Ich denke, das Problem ist, dass die Art, wie Sie erstellt mapdata Sie mit einer Liste der Länge von 2 für beide TotalGreenhouseGases und Amount endet.

> str(mapdata) 
'data.frame': 1 obs. of 5 variables: 
    $ latitude   : num -37.8 
$ longitude   : num 145 
$ TotalGreenhouseGases: num [1, 1:2] 107587 3 
..- attr(*, "dimnames")=List of 2 
.. ..$ : NULL 
.. ..$ : chr "mn" "n" 
$ Amount    : num [1, 1:2] 81505 3 
..- attr(*, "dimnames")=List of 2 
.. ..$ : NULL 
.. ..$ : chr "mn" "n" 

Wenn Sie also die Summe dieser Werte in Ihrer paste Funktion verwenden möchten, dann müssen Sie [1] Indizierung verwenden, wenn Sie die Stichprobengröße n dann verwenden verwenden müssen [2]. Zum Beispiel:

mapdata$hover <- paste(mapdata$TotalGreenhouseGases[1], 
         "CO2 Emission ",'<br>', "Resource Consumption ", 
         mapdata$Amount[1]) 

geben Sie

[1] "107586.7848 CO2 Emission <br> Resource Consumption 81505.14" 
+0

Siehe 3. Kommentar unter der Frage;) – FlorianSchunke

+0

yup, ich sah es nur, nachdem ich die Antwort geschrieben ... Sie waren schneller! – sparrow

+0

Danke, es löst mein Problem –

Verwandte Themen