Seite 1 von 1

Prompts pro Person berechnen

Verfasst: Sa Sep 02, 2023 8:58 pm
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

Re: Prompts pro Person berechnen

Verfasst: Sa Sep 02, 2023 10:50 pm
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

Re: Prompts pro Person berechnen

Verfasst: Di Sep 05, 2023 9:19 pm
von lxxa
Vielen Dank!