long zu wide format mit R

Allgemeine Statistik mit R, die Test-Methode ist noch nicht bekannt, ich habe noch keinen Plan!

Moderatoren: EDi, jogo

Antworten
pulchriphyllium
Beiträge: 1
Registriert: Di Apr 23, 2024 9:19 am

long zu wide format mit R

Beitrag von pulchriphyllium »

Hi,
ich versuche gerade Code aus dem paper (siehe unten) auf meinen Fall anzuwenden (Vegetationsdaten über einen Zeitraum analysieren).
In einem Fall formatiert die Autorin ihren Datensatz (Vegetationsdaten und Umweltparameter) zu einem long format um - das bekomme ich auch hin - dann formatiert sie es mit einem code zurück zu einem wide format, bei dem sich aber auch etwas anderes ändert - ich verstehe den Code bzw was passiert nicht so ganz - vielleicht kann mir jemand helfen :) Der Code kann heruntergeladen werden (Beispiel Code S2 im Paper).

# mit diesem Code wird ein neues objekt im long format erstellt

Code: Alles auswählen

poren.long <-pore %>% dplyr::filter(Year > 2006) %>%
  arrange(Year, Grazing.Treatment) %>%
  gather(species, cover, -Year, -Grazing.Treatment, -replicate, -transect, -BARE, -DUNG, -FUNGI, -LICH, -LITT, -MOSS, -MUSH, -Total, -TotalPlant, -transect.num, -transect.time) %>%
  group_by(species) %>% 
  filter(cover > 0) %>%
  droplevels()
View(poren.long)
#mit diesem Code wird daraus wieder ein wide format erstellt - dieser Datensatz unterscheidet sich aber vom orginal datensatz der ja auch im wide format ist - dieses Trt_transect ist neu

Code: Alles auswählen

poren <- poren.long %>%
  arrange(Year, Grazing.Treatment) %>%
  spread(species, cover, fill = 0) %>%
  separate(transect, -1, into = c("temp", "temp1"), remove = FALSE) %>%
  unite("Trt_transect", c("Grazing.Treatment", "replicate", "temp1"), remove = FALSE) %>%
  dplyr::select(-temp, -temp1) %>%
  mutate(Trt_transect = fct_relevel(Trt_transect, "exclosure_1_f","exclosure_1_s","exclosure_2_f","exclosure_2_s", "new exclosure_1_f","new exclosure_1_s","new exclosure_2_f","new exclosure_2_s", "continuous light_1_f", "continuous light_1_s","continuous light_2_f","continuous light_2_s","new light_1_f","new light_1_s","new light_2_f","new light_2_s", "continuous moderate_1_f", "continuous moderate_1_s","continuous moderate_2_f","continuous moderate_2_s","continuous heavy_1_f","continuous heavy_1_s","continuous heavy_2_f","continuous heavy_2_s")) %>%
  as.data.frame()
View(poren)
Paper:
Buckley, Hannah L., Nicola J. Day, Bradley S. Case, and Gavin Lear. 2021. ‘Measuring Change in Biological Communities: Multivariate Analysis Approaches for Temporal Datasets with Low Sample Size’. PeerJ 9: e11096. doi:10.7717/peerj.11096.


LG
bigben
Beiträge: 2782
Registriert: Mi Okt 12, 2016 9:09 am

Re: long zu wide format mit R

Beitrag von bigben »

Hallo!

das ist dplyr, ein Dialekt von R mit dem ich mich nie richtig beschäftigt habe. Vielleicht meldet sich noch jemand mit mehr Erfahrung darin.

pulchriphyllium hat geschrieben: Di Apr 23, 2024 9:26 amdieses Trt_transect ist neu
Das entsteht wohl an dieser Stelle:

Code: Alles auswählen

unite("Trt_transect", c("Grazing.Treatment", "replicate", "temp1"), remove = FALSE)
an der die Inhalte der Spalten Grazing.Treatment, replicate und temp1 aneinandergehängt werden.

unite() aus dem Paket tidyr

Hilft das schon, oder willst Du damit die Frage nochmal präzisieren?

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten