Zeitintervall

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

Moderatoren: EDi, jogo

Antworten
Psyc_Bi
Beiträge: 4
Registriert: Fr Jun 03, 2022 5:53 pm

Zeitintervall

Beitrag von Psyc_Bi »

Hallo,

ich rechne zurzeit Statistik für me meine BA-Abschlussarbeit und bräuchte dazu Hilfe, wie ich Tageszeitintervalle erstellen kann.

In der Erhebung wurde mit Aktigraphen gemessen, wo Daten zur physischen Aktivität erfasst wurden. Ich hab aber nach tagelangem googeln nichts gefunden, wie ich weitergehen soll.
Am Bild sieht man, wie Zeit erfasst wurde. Ich habe drei Bedingungen: vor 14:00, dann 14:00 - 22:00 und nach 22:00.
Wie kann ich diese Zeiträume definieren und in die Analyse aufnehmen?
Dateianhänge
Bildschirmfoto 2022-06-03 um 17.58.19.png
bigben
Beiträge: 2780
Registriert: Mi Okt 12, 2016 9:09 am

Re: Zeitintervall

Beitrag von bigben »

Hallo,

kannst Du anstelle eines Screenshots ein str() von Deinen Daten posten? So ist unklar, ob das Strings oder Datum und Uhrzeit sind.
Noch besser wäre ein reproduzierbares Beispiel.

lubridate ist ein tolles package für Satumsrechnung und einen Thread zum Umcodieren habe ich in den FAQ eingestellt.

LG, Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Psyc_Bi
Beiträge: 4
Registriert: Fr Jun 03, 2022 5:53 pm

Re: Zeitintervall

Beitrag von Psyc_Bi »

Hallo Bernhard,

ich habe einen Teildatensatz in csv Format erstellt. Ich hoffe, es ist möglich damit auch zu arbeiten.

Lubridate habe ich mir schon angeschaut, bin aber, um ehrlich zu sein völlig überfordert damit, da ich mit sowas noch nie gearbeitet habe und die User Manual ist für mein Verständnis nicht eindeutig genug oder mein Englisch ist in diesem Sinne weitgehend nicht ausreichend und die Feinheiten der unterschiedlichen Befehlen zu verstehen.

LG, John
Dateianhänge
Teiltabelle.csv
(79.33 KiB) 40-mal heruntergeladen
bigben
Beiträge: 2780
Registriert: Mi Okt 12, 2016 9:09 am

Re: Zeitintervall

Beitrag von bigben »

Hallo John,

Deine Daten lassen sich wie folgt einlesen:

Code: Alles auswählen

tt <- read.csv2("http://forum.r-statistik.de/download/file.php?id=1755")
str(tt)
head(tt$Time)
Die Spalte tt$Time scheint die Anzahl der Sekunden seit Mitternacht zu enthalten und bietet sich daher für die von Dir angestrebte Unterteilung an:
Ich habe drei Bedingungen: vor 14:00, dann 14:00 - 22:00 und nach 22:00
Gruppe eins, alles bis 14 Uhr, sind damit alle die Zeilen, in denen Time kleiner als 14*60^2 = 50400 ist. 22:00 Uhr entspricht einem Sekundenwert von 22*60^2 = 79200. Um an diesen Grenzwerten eine Gruppierungsvariable zu erstellen hat R die Funktion cut. Wir erstellen eine neue Spalte TimeGroup wie folgt:

Code: Alles auswählen

tt$TimeGroup <- cut(tt$Time, breaks = c(0, 50400, 79200, 24*60^2), 
                    labels = c("bis1400", "bis2200", "bisMitternacht"), 
                    ordered_result = TRUE)
 
str(tt$TimeGroup)  #neue Spalte ist erstellt worden
table(tt$TimeGroup, tt$Gender)  # Beispiel für eine Auswertung mit Einbezug Dieser Variablen.
Und diese neue Spalte kannst Du jetzt für alle möglichen Auswetungen als Gruppenvariable verwenden.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Psyc_Bi
Beiträge: 4
Registriert: Fr Jun 03, 2022 5:53 pm

Re: Zeitintervall

Beitrag von Psyc_Bi »

Bernhard,

ich bedanke mich bei dir!

Allerdings hab ich grade gesehen, dass bei der Spalte Time die Zeit irgendiwie konvertiert wurde.
In dem Originaldatei ist es h:mm:ss und in dem von mir hochgeladenen Datensatz sind es vorlaufende Sekunden.
Könntest du bitte bei dieser Variante das noch mal machen?
Ich möchte mich wegen der Unannehmlichkeit entschuldigen!

VG
Dateianhänge
Teiltabelle_2.csv
(54.04 KiB) 37-mal heruntergeladen
bigben
Beiträge: 2780
Registriert: Mi Okt 12, 2016 9:09 am

Re: Zeitintervall

Beitrag von bigben »

Hallo Psyc_Bi,

wenn Du einen einfachen Weg kennst, die Konvertierung so vorzunehmen, wie sie die versehentlich passiert ist, dann nimm den doch und rechne damit weiter.

Ansonsten wäre die Funktion hms in lubridate das richtige, um Deine Werte in ein geeignetes Datenformat zu pressen:

Code: Alles auswählen

library(lubridate)
uhrzeit <- hms(c("07:40:50", "10:56:18", "13:34:00", "15:23:13", 
                 "17:20:00", "18:54:36"))
print(uhrzeit)
Für Deinen konkreten Anwendungsfall vielleicht so:

Code: Alles auswählen

tt <- read.csv2("http://forum.r-statistik.de/download/file.php?id=1757")

library(lubridate)
tt$uhrzeit <- hms(tt$Time, quiet = TRUE)
tt$sekunden <- as.numeric(tt$uhrzeit)
tt$sekunden
Und von da dann wieder mit cut weiter.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Psyc_Bi
Beiträge: 4
Registriert: Fr Jun 03, 2022 5:53 pm

Re: Zeitintervall

Beitrag von Psyc_Bi »

Jetzt, hat es alles funktioniert.
Wunderbar!
Vielen Dank noch mal!
Bist du mal in Bielefeld unterwegs, musst du ein Bier auf meine Kosten trinken :D
bigben
Beiträge: 2780
Registriert: Mi Okt 12, 2016 9:09 am

Re: Zeitintervall

Beitrag von bigben »

In wo? Gibt's doch garnich :D
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten