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
Datenaufbereitung
Datenaufbereitung
- Dateianhänge
-
- df.txt
- (246 Bytes) 97-mal heruntergeladen
Re: Datenaufbereitung
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:
oder noch etwas verkürzt:
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
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()
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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Datenaufbereitung
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
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
Hallo Tom,
nur mal ganz schnell:
Das Leerzeichen macht den Unterschied!
nur mal ganz schnell:
Code: Alles auswählen
bigben: |> Du: | >
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube
Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube
Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
Re: Datenaufbereitung
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:
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?
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
Code: Alles auswählen
sessionInfo()$R.version$version.string
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)
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?
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte