Hallo zusammen!
Ich hoffe, mir kann jemand helfen, bin absolute R-Anfängerin und werte Daten für meine Masterarbeit aus.
Ich würde gerne Mittelwerte berechen und zwar unterteilt nach den Variablen "task" und "transition". Im Anhang ein Ausschnitt meines Datensets.
Ich benötige die Mittelwerte der Variablen zr, a, v, t0, st0 und p gruppiert nach task (hier gibt es die Ausprägungen digit, context, letter) und transition (ABA, CBA, CAA).
Daraus soll dann wieder eine eigene Tabelle entstehen.
Kann mir jemand weiterhelfen? Vielen Dank schon mal!!
Aggregieren und Mittelwerte bilden
Moderator: jogo
-
- Beiträge: 37
- Registriert: Do Dez 01, 2016 9:08 pm
Re: Aggregieren und Mittelwerte bilden
Hier hatte ich mal die vielen Möglichkeiten die R bietet aufgeschrieben. Anstatt max einfach mean einsetzen.
Edit: Hier mal hinkopiert (für google...)
Edit: Hier mal hinkopiert (für google...)
Code: Alles auswählen
df <- read.table(header = TRUE, text = 'Gene Value
A 12
A 10
B 3
B 5
B 6
C 1
D 3
D 4')
# aggregate
aggregate(df$Value, by = list(df$Gene), max)
aggregate(Value ~ Gene, data = df, max)
# tapply
tapply(df$Value, df$Gene, max)
# split + lapply
lapply(split(df, df$Gene), function(y) max(y$Value))
# plyr
require(plyr)
ddply(df, .(Gene), summarise, Value = max(Value))
# dplyr
require(dplyr)
df %>% group_by(Gene) %>% summarise(Value = max(Value))
# data.table
require(data.table)
dt <- data.table(df)
dt[ , max(Value), by = Gene]
# doBy
require(doBy)
summaryBy(Value~Gene, data = df, FUN = max)
# sqldf
require(sqldf)
sqldf("select Gene, max(Value) as Value from df group by Gene", drv = 'SQLite')
# ave
df[as.logical(ave(df$Value, df$Gene, FUN = function(x) x == max(x))),]
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
.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Re: Aggregieren und Mittelwerte bilden
Hallo!
LG,
Bernhard
Einen Anhang sehe ich nicht, aber EDi hat die Frage ja schon (über-)beantwortet. Nur wenn Du Probleme mit der Umsetzung von EDis Antwort hast, kannst Du den Anhang ja vielleicht noch nachreichen.FridaKoriander hat geschrieben:Im Anhang ein Ausschnitt meines Datensets.
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
-
- Beiträge: 37
- Registriert: Do Dez 01, 2016 9:08 pm
Re: Aggregieren und Mittelwerte bilden
erst mal vielen Dank für die Antworten!
Habe es nochmals versucht, den Screeshot anzuhängen...hoffe es hat jetzt geklappt.
Also ich habe die Daten über diese Funktion:
Code: Alles auswählen
aggregate(test$a, by = list(test$task, test$transition), mean)
Code: Alles auswählen
aggregate(test$v, test$zr, test$t0, test$a by = list(test$task, test$transition), mean)
Vielen Dank schon mal im Voraus!
Zuletzt geändert von jogo am Do Dez 15, 2016 3:01 pm, insgesamt 1-mal geändert.
Grund: Formatierung der Codestücke
Grund: Formatierung der Codestücke
Re: Aggregieren und Mittelwerte bilden
Hallo Frida,
bitte probier mal:
Gruß, Jörg
p.s.: Bitte Codestücke entsprechend formatieren (siehe viewtopic.php?f=20&t=29 )
bitte probier mal:
Code: Alles auswählen
aggregate(cbind(v, zr, t0, a) ~ task + transition, data=test, FUN=mean)
p.s.: Bitte Codestücke entsprechend formatieren (siehe viewtopic.php?f=20&t=29 )
-
- Beiträge: 37
- Registriert: Do Dez 01, 2016 9:08 pm
Re: Aggregieren und Mittelwerte bilden
Toll! Vielen vielen Dank euch für die Hilfe!
Klappt alles wunderbar!
ups, das mit dem Code wusste ich nicht, werd´s mir für die Zukunft merken!
Grüße,
Frida
Klappt alles wunderbar!
ups, das mit dem Code wusste ich nicht, werd´s mir für die Zukunft merken!
Grüße,
Frida