Öffnungszeiten nach Wochentag auslesen

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

Moderatoren: EDi, jogo

Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Öffnungszeiten nach Wochentag auslesen

Beitrag von EDi »

Das parsen könnte so aussehen:

Code: Alles auswählen

# Packages ----------------------------------------------------------------
library(jsonlite)
library(purrr)
library(dplyr)
library(tidyr)

# read --------------------------------------------------------------------

df <- read.table(file.choose(), header = TRUE, sep = ',')



# parse json -------------------------------------------------------------

df <- df %>%
  mutate(openingtimes = map(openingtimes_json, parse_json))


# parse openingtimes ---------------------------------------------------------

parse_openningtime <- function(openingtime) {
  data.frame(app_days = openingtime$applicable_days,
             startp = openingtime$periods[[1]]$startp,
             end_p = openingtime$periods[[1]]$endp)
}

parse_openningtimes <- function(openningtimes){
  map_df(openingtimes[[1]], parse_openningtime)
}

df <- df %>%
  mutate(parsed_openingtimes = map(openingtimes, parse_openningtimes))


# into a nice data.frame --------------------------------------------------

df %>%
  unnest(parsed_openingtimes)
versuch mal zu verstehen was da so geschieht (ist nämlich ne Menge).
Das ganze geht auch ohne dplyr, purrr & unnest - aber ich persönlich finde es angenehmer die Daten zusammenzuhalten (in list-columns).

map kann z.B. durch lapply() ersetzt werden.
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.
Bugs
Beiträge: 10
Registriert: Sa Sep 26, 2020 11:41 am

Re: Öffnungszeiten nach Wochentag auslesen

Beitrag von Bugs »

versuch mal zu verstehen was da so geschieht (ist nämlich ne Menge).
Das ganze geht auch ohne dplyr, purrr & unnest - aber ich persönlich finde es angenehmer die Daten zusammenzuhalten (in list-columns).

Hallo EDi,

ich habe mir das mal genauer angeschaut und denke ich verstehe die Vorgehensweise weitestgehend.
Ich habe die Befehle außerdem mal auf meinen Datensatz angewendet und es hat tatsächlich so funktioniert, wie ich mir das vorgestellt hatte :D
Ich denke damit kann ich erst einmal weiter arbeiten. Vielen Dank. Das hat mir sehr geholfen. :D

LG
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Öffnungszeiten nach Wochentag auslesen

Beitrag von Athomas »

Bugs hat geschrieben: Mo Sep 28, 2020 12:35 pm Es handelt sich dabei um diesen Datensatz, den ich als CSV in R eingelesen habe:

https://dev.azure.com/tankerkoenig/_git ... ations.csv
Das ist die Datei, die Du in EDis Programm mit

Code: Alles auswählen

df <- read.table(file.choose(), header = TRUE, sep = ',')
eingelesen hast?
Bugs
Beiträge: 10
Registriert: Sa Sep 26, 2020 11:41 am

Re: Öffnungszeiten nach Wochentag auslesen

Beitrag von Bugs »

EDi hat geschrieben: Mo Sep 28, 2020 11:04 pm Das parsen könnte so aussehen:

Code: Alles auswählen

# Packages ----------------------------------------------------------------
library(jsonlite)
library(purrr)
library(dplyr)
library(tidyr)

# read --------------------------------------------------------------------

df <- read.table(file.choose(), header = TRUE, sep = ',')



# parse json -------------------------------------------------------------

df <- df %>%
  mutate(openingtimes = map(openingtimes_json, parse_json))


# parse openingtimes ---------------------------------------------------------

parse_openningtime <- function(openingtime) {
  data.frame(app_days = openingtime$applicable_days,
             startp = openingtime$periods[[1]]$startp,
             end_p = openingtime$periods[[1]]$endp)
}

parse_openningtimes <- function(openningtimes){
  map_df(openingtimes[[1]], parse_openningtime)
}

df <- df %>%
  mutate(parsed_openingtimes = map(openingtimes, parse_openningtimes))


# into a nice data.frame --------------------------------------------------

df %>%
  unnest(parsed_openingtimes)
versuch mal zu verstehen was da so geschieht (ist nämlich ne Menge).
Das ganze geht auch ohne dplyr, purrr & unnest - aber ich persönlich finde es angenehmer die Daten zusammenzuhalten (in list-columns).

map kann z.B. durch lapply() ersetzt werden.




Hallo EDi,

ist schon eine Weile her, als Du mir mit dieser Antwort extrem weitergeholfen hast.
Wie damals bereits gesagt, kann ich die Vorgehensweise grob nachvollziehen, allerdings muss ich nun genau erläutern, was die einzelnen Befehle bewirken.
Ich weiß nicht wieviel Aufwand es für Dich ist, sich wieder in das Thema rein zu lesen, aber über eine kleine Erklärung wäre ich sehr dankbar.

Danke im Voraus!

LG
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Öffnungszeiten nach Wochentag auslesen

Beitrag von EDi »

Wo hängst denn? Geh mal Zeile für Zeile durch, schau dir Input & Output an, zerlege die Zeilen in Teile, führe diese einzeln aus.

Das bringt dir mehr, wie wenn ich dir erkläre was da passiert...

Wenn du _genau_ erläutern willst was passiert, musst du dir unter Anderem den Quellcode von jsonlite::parse_json und den damit verbundenen Code analysieren. Gute Übung um Quellecode zu lesen! - Mir reicht's zu wissen, dass es ein json in ein R-Objekt umwandelt...
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.
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Öffnungszeiten nach Wochentag auslesen

Beitrag von EDi »

Wo hängst denn?
Scheint ja nicht so wichtig zu sein... Bin hier raus...
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.
Antworten