Seite 1 von 1
Datenaufbereitung
Verfasst: So Nov 28, 2021 11:54 am
von Tom
Hallo zusammen,
ich möchte, dass R mir unter folgenden Bedingungen die Spalte "Bin" des Datensatzes "df" (s. Anhang) wie folgt ausfüllt:
Wenn Variable RT zwischen 0.400-0.500 liegt, dann soll Bin = 1 sein
Wenn Variable RT zwischen 0.500-0.600 liegt, dann soll Bin = 2 sein
Wenn Variable RT zwischen 0.600-0.700 liegt, dann soll Bin = 3 sein
Weiß jemand eine Lösung, wie man das möglichst effizient machen kann?
Danke Euch schonmal im Voraus.
LG
Tom
Re: Datenaufbereitung
Verfasst: So Nov 28, 2021 6:57 pm
von bigben
Hallo Tom,
ich habe eine ganze Reihe möglicher Lösungsansätze für dieses und ähnliche Probleme hier zusammengetragen:
http://forum.r-statistik.de/viewtopic.php?t=2162
In Deinem Fall könnte das hier gut funktionieren:
Code: Alles auswählen
Df <- read.table(header = TRUE,
text = "VP Antwort a RT Bin v
12 1 standard 0.678 NA v_52
12 1 standard 0.467 NA v_52
12 0 standard 0.404 NA v_52
12 1 standard 0.418 NA v_52
12 1 standard 0.679 NA v_52
12 1 standard 0.686 NA v_52
12 1 standard 0.692 NA v_52
12 1 standard 0.492 NA v_52")
str(Df)
Df$Bin <- cut(x = Df$RT,
breaks = c(.4, .5, .6, .7), labels = c(1, 2, 3)) |>
as.character() |> as.integer()
print(Df)
oder noch etwas verkürzt:
Code: Alles auswählen
Df$Bin2 <- cut(x = Df$RT, breaks = c(.4, .5, .6, .7)) |> as.integer()
Effizienz sollte eigentlich unkritisch sein, wenn Du nicht gerade viele Milliarden Zeilen in Deinem Datensatz hast. Und selbst dann...
Schau Dir aber gerne auch den oben verlinkten Thread an -- die Frage stellt sich bei der Datenverarbeitung häufig und daher gibt es weit mehr als nur eine gute Antwort darauf.
LG,
Bernhard
Re: Datenaufbereitung
Verfasst: So Nov 28, 2021 8:10 pm
von Tom
Hallo Bernhard,
vielen Dank für deine Hilfe, ich erhalte allerdings folgende Fehlermeldung, wenn ich deinen Code verwende:
df$Bin <- cut(x = df$RT,
+ breaks = c(.4, .5, .6, .7), labels = c(1, 2, 3)) | >
Fehler: Unerwartete(s) '>' in:
"df$Bin <- cut(x = df$RT,
breaks = c(.4, .5, .6, .7), labels = c(1, 2, 3)) | >"
> as.character() | > as.integer()
Fehler: Unerwartete(s) '>' in " as.character() | >"
Hast du vielleicht eine Idee, woran das liegen könnte?
LG
Tom
Re: Datenaufbereitung
Verfasst: Mo Nov 29, 2021 9:50 am
von student
Hallo Tom,
nur mal ganz schnell:
Das Leerzeichen macht den Unterschied!
Re: Datenaufbereitung
Verfasst: Mo Nov 29, 2021 9:58 am
von bigben
Hallo Tom,
so ganz einfach kann ich das jetzt nicht aufklären. Mein erster Verdacht wäre, dass es an der R-Version liegt. Um das untersuchen machen wir zwei Dinge:
Zum einen poste bitte mal das Ergebnis von
Zum anderen probier bitte mal diese Umschrift meiner Kurzversion aus:
Code: Alles auswählen
Df <- read.table("http://forum.r-statistik.de/download/file.php?id=1619", header = TRUE)
Df$Bin <- as.integer(cut(x = Df$RT, breaks = c(.4, .5, .6, .7)))
print(Df)
LG,
Bernhard
PS: Deine Regel behandelt keine Fälle von RT die kleiner als 0,4 und keine die größer als 0,7 sind. Kommen solche Fälle verlässlich nicht vor, oder müssen wir uns da Gedanken drum machen? Außerdem machen Deine Regeln nicht klar, ob ein Wert von genau 0,50000 jetzt in Bin = 1 oder in Bin = 2 fällt. Ist das unkritisch oder muss das definiert werden?