Aggregieren und Mittelwerte bilden

Alles zum Thema der beschreibenden Statistik

Moderator: jogo

Antworten
FridaKoriander
Beiträge: 35
Registriert: Do Dez 01, 2016 9:08 pm

Aggregieren und Mittelwerte bilden

Beitrag von FridaKoriander » Mi Dez 14, 2016 9:42 pm

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!!

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

Re: Aggregieren und Mittelwerte bilden

Beitrag von EDi » Mi Dez 14, 2016 10:00 pm

Hier hatte ich mal die vielen Möglichkeiten die R bietet aufgeschrieben. Anstatt max einfach mean einsetzen.

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
Bild.

bigben
Beiträge: 720
Registriert: Mi Okt 12, 2016 9:09 am

Re: Aggregieren und Mittelwerte bilden

Beitrag von bigben » Do Dez 15, 2016 8:10 am

Hallo!
FridaKoriander hat geschrieben:Im Anhang ein Ausschnitt meines Datensets.
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.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte

FridaKoriander
Beiträge: 35
Registriert: Do Dez 01, 2016 9:08 pm

Re: Aggregieren und Mittelwerte bilden

Beitrag von FridaKoriander » Do Dez 15, 2016 2:40 pm

Screenshot dataset.png
Hallo zusammen,

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)
...aggregiert. Rein aus Interesse...ich möchte ja die Mittelwerte von den Variablen a, zr, v, und t0 und habe einfach mal folgendes versucht:

Code: Alles auswählen

aggregate(test$v, test$zr, test$t0, test$a  by = list(test$task, test$transition), mean)
...was aber nicht funktioniert...gibt es da eine Möglichkeit, das elegant mit einer Funktion zu lösen? Somit hätte ich nämlich auch gleich eine einheitliche Tabelle.

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

jogo
Beiträge: 1009
Registriert: Fr Okt 07, 2016 8:25 am

Re: Aggregieren und Mittelwerte bilden

Beitrag von jogo » Do Dez 15, 2016 2:57 pm

Hallo Frida,

bitte probier mal:

Code: Alles auswählen

aggregate(cbind(v, zr, t0, a) ~ task + transition, data=test, FUN=mean)
Gruß, Jörg
p.s.: Bitte Codestücke entsprechend formatieren (siehe viewtopic.php?f=20&t=29 )

FridaKoriander
Beiträge: 35
Registriert: Do Dez 01, 2016 9:08 pm

Re: Aggregieren und Mittelwerte bilden

Beitrag von FridaKoriander » Do Dez 15, 2016 3:05 pm

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

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast