Prompts pro Person berechnen

Alles zum Thema der beschreibenden Statistik

Moderator: jogo

Antworten
lxxa
Beiträge: 6
Registriert: Di Jun 27, 2023 12:09 pm

Prompts pro Person berechnen

Beitrag von lxxa »

Hallo :)

Ich habe einen Datensatz mit mehreren Befragungszeitpunkten pro Person (-> mehrere Zeilen pro Person). Allerdings haben alle Personen unterschiedlich viele Befragungen beantwortet (-> unterschiedlich viele Zeilen pro Person). Nun würde ich gerne wissen, wie viele Befragungen die Personen im Durchschnitt beantwortet haben (und wie die Standardabweichung ist). Meine Daten enthalten sehr viele Variablen, am einfachsten wäre es wahrscheinlich zu berechnen, wie oft im Durchschnitt die gleiche Probanden Nummer vorkommt.

stark vereinfacht sieht mein Datensatz ungefähr so aus:

Code: Alles auswählen

VP Nr          Var2         Var2       
1                   1            1                                               
1                   2            1                                                 
1                   3            2                                                                  
2                   2            1                                                   
2                   1            4                                                
2                   2            2
2                   3            3
2                   4            2
Vielleicht hat ja jemand einen passsenden Code für mich :)

Liebe Grüße
bigben
Beiträge: 2827
Registriert: Mi Okt 12, 2016 9:09 am

Re: Prompts pro Person berechnen

Beitrag von bigben »

Hallo Ixxa,

das kann man beispielsweise mit der Funktion tapply zählen. Hier ein Beispiel

Code: Alles auswählen

example <- data.frame(id = c(1, 2, 2, 3, 3, 3, 3, 3, 4, 5, 6, 6, 7,
                             7, 7, 8, 8, 9, 10, 11, 11, 11, 11, 11),
                      var1 = 1, var2 = NA, var3 = round(runif(24), 3))
head(example)
#>   id var1 var2  var3
#> 1  1    1   NA 0.206
#> 2  2    1   NA 0.622
#> 3  2    1   NA 0.604
#> 4  3    1   NA 0.099
#> 5  3    1   NA 0.181
#> 6  3    1   NA 0.127

counts <- tapply(X = example$id, INDEX = example$id, FUN = length)

print(counts)
#>  1  2  3  4  5  6  7  8  9 10 11 
#>  1  2  5  1  1  2  3  2  1  1  5
mean(counts)
#> [1] 2.181818
sd(counts)
#> [1] 1.537412
quantile(counts, c(0, .25, .5, .75, 1))
#>   0%  25%  50%  75% 100% 
#>  1.0  1.0  2.0  2.5  5.0
median(counts)
#> [1] 2
plot(ecdf(counts))
Wenn Du Dich durchringen kannst, das Paket data.table zu verwenden, geht sowas auch sehr kurz und prägnant:

Code: Alles auswählen

library(data.table)
example <- data.table(id = c(1, 2, 2, 3, 3, 3, 3, 3, 4, 5, 6, 6, 7,
                             7, 7, 8, 8, 9, 10, 11, 11, 11, 11, 11),
                      var1 = 1, var2 = NA, var3 = round(runif(24), 3))
head(example)
#>    id var1 var2  var3
#> 1:  1    1   NA 0.654
#> 2:  2    1   NA 0.051
#> 3:  2    1   NA 0.867
#> 4:  3    1   NA 0.843
#> 5:  3    1   NA 0.512
#> 6:  3    1   NA 0.925

counts <- example[,.N, id]
counts
#>     id N
#>  1:  1 1
#>  2:  2 2
#>  3:  3 5
#>  4:  4 1
#>  5:  5 1
#>  6:  6 2
#>  7:  7 3
#>  8:  8 2
#>  9:  9 1
#> 10: 10 1
#> 11: 11 5
distr <- counts[, .(mittel = mean(N), sd = sd(N), min = min(N), max = max(N))]
distr
#>      mittel       sd min max
#> 1: 2.181818 1.537412   1   5
Viel Erfolg damit,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
lxxa
Beiträge: 6
Registriert: Di Jun 27, 2023 12:09 pm

Re: Prompts pro Person berechnen

Beitrag von lxxa »

Vielen Dank!
Antworten