Liste zu Dataframe konvertieren; Problem dabei

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
Mad Rugada
Beiträge: 4
Registriert: Do Okt 25, 2018 4:26 am

Liste zu Dataframe konvertieren; Problem dabei

Beitrag von Mad Rugada »

Hallo zusammen; ich würde mich riesig über Hilfe freuen, da es mittlerweile der zweite Tag ist, an dem ich vergeblich eine Sache zu lösen versuche.

Ich habe eine Liste mit dem Namen VEG:
List of 1
$ : num [1:49, 1:428] 4179 3968 4499 4865 3421 ...
..- attr(*, "dimnames")=List of 2
.. ..$ : NULL
.. ..$ : chr [1:428] "MOD13Q1.A2000049.250m_16_days_NDVI" "MOD13Q1.A2000065.250m_16_days_NDVI" "MOD13Q1.A2000081.250m_16_days_NDVI" "MOD13Q1.A2000097.250m_16_days_NDVI" ...

Es handelt sich hierbei um insgesamt 428 MODIS Satellitendaten (chr [1:428]) und pro Satellitenaufnahme um 49 Pixel.
Ich möchte diese Liste in ein Dataframe (alternativ Matrix) konvertieren. Die Konvertierung selbst klappt, aber jedesmal geht die Information über die MODIS Satellitendaten verloren und ich erhalte Spalten von 1 bis 20972 (428 * 49). Ich möchte jedoch gerne ein Dataframe haben, welches die Informationen über die MODIS Satelittennamen enthält.
Zum Beispiel so:
MOD13Q1.A2000049.250m_16_days_NDVI 4263.878
... weitere 48 MOD-"-49-"- Zeilen
MOD13Q1.A2000065.250m_16_days_NDVI 4475.592
... weitere 48 MOD-"-65-"- Zeilen
MOD13Q1.A2000081.250m_16_days_NDVI 4990.286
... weitere 48 MOD-"-65-"- Zeilen
MOD13Q1.A2000097.250m_16_days_NDVI 5864.041
...
usw.


oder so:
. x1 x2 x3 x4 x4
MOD13Q1.A2000049.250m_16_days_NDVI 4263 4217 4393 4398 4411 ... weitere 44 Pixel Spalten
MOD13Q1.A2000065.250m_16_days_NDVI 4475 4337 4607 4593 4576 ... weitere 44 Pixel Spalten
MOD13Q1.A2000081.250m_16_days_NDVI 4990 4980 5126 5112 5089 ... weitere 44 Pixel Spalten
MOD13Q1.A2000097.250m_16_days_NDVI 5864 6149 6011 5993 5908 ... weitere 44 Pixel Spalten
MOD13Q1.A2000113.250m_16_days_NDVI 5731 5716 5830 5858 5764 ... weitere 44 Pixel Spalten
MOD13Q1.A2000129.250m_16_days_NDVI 5431 5318 5507 5552 5478 ... weitere 44 Pixel Spalten
... weitere unterschiedliche 422 MOD Zeilen

Egal wie. Hauptsache, ich kann die Pixel den einzelnen MODIS Satellitendaten zuordnen.



Folgendes habe ich versucht:

1. Versuch: VEG_df <- as.data.frame(VEG)
Mein Output:
MOD13Q1.A2000049.250m_16_days_NDVI MOD13Q1.A2000065.250m_16_days_NDVI MOD13Q1.A2000081.250m_16_days_NDVI
1 4179 4236 4875
2 3968 4028 4780
MOD13Q1.A2000097.250m_16_days_NDVI MOD13Q1.A2000113.250m_16_days_NDVI MOD13Q1.A2000129.250m_16_days_NDVI
1 5598 5545 5154
2 5798 5365 5054

etc.....

Wieso hier zwei Werte pro Modisbild auftauchen, kann ich nciht nachvollziehen. So oder so; ist das noch nicht die gewünschte Form.
Daher habe ich versucht die Spalten und Zeilen dieses Output zu tauschen mit:

2.) Versuch: VEG_df <- as.data.frame(t(VEG))
Mein Output ist sehr chaotisch und und einfach voll mit Zahlen ohne Zeilen und Spalten oder eine erkennbare Struktur und ohne Informationen der MODIS Satellitenbilder.

3.) Versuch:
VEG_ma <- stri_list2matrix(VEG, byrow=FALSE) # install.packages("stringi")

Mein Output enthält die Informationen über die Satelliten nicht und sieht folgerndermaßen aus:

[2,] "3968"
[3,] "4499"
[4,] "4865"
[5,] "3421"
[6,] "4888"
...
...
[20972]


4.) Versuch:
VEG_neu <- lapply(VEG, function(v) {c (v, rep (NA, max.length-length(v)))})

Auch hier gehen die Informationen zu den Satellitendaten verloren.


Ich freue mich über jede Tipps.
Zuletzt geändert von Mad Rugada am Fr Okt 26, 2018 9:38 am, insgesamt 1-mal geändert.
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Liste zu Dataframe konvertieren; Problem dabei

Beitrag von EDi »

Code: Alles auswählen

VEG[[1]]
dürfte die eine matrix mit 49zeilen und428 Spalten geben.

Code: Alles auswählen

str(VEG[[1]]) 
Danach würde ich

Code: Alles auswählen

str(as.data.frame(VEG[[1]]))
probieren.

Ohne eine reproduzierbares Beispiel bleibt das aber Spekulation (für mich auch die einzigste in diesem Faden).
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Mad Rugada
Beiträge: 4
Registriert: Do Okt 25, 2018 4:26 am

Re: Liste zu Dataframe konvertieren; Problem dabei

Beitrag von Mad Rugada »

Dankeschön.
Das war einfacher als gedacht.

Mit as.data.frame(t(VEG[[1]]))) habe ich genau das, was ich brauche.
Antworten