![](/img/trans.png)
[英]How to use dplyr to calculate a weighted mean of two grouped variables
[英]How to use dplyr to iteratively calculate summary variables
我的數據包含大約350項的評級。 每件商品均由10人評定,每人評定350件商品中的3件。 所以我的專欄是每個項目的評級,每個項目有20個評級。 所以這些列看起來像Q20_1 Q20_2 Q20_3 ... Q20_20,Q22_1,Q22_2,...等。 每個參與者都是一排。 所以這是一個1166x7000的數據矩陣。 每行僅包含60列(3項)響應的數據,因為參與者僅評定3個項目。
我想使用DPLYR來創建匯總變量。 類似於Q20_1,Q20_5,Q20_7和Q20_13的平均值......然后重復所有項目。 然后我希望能夠創建這些變量的平均值。
我試過在SPSS中這樣做。 代碼非常簡單。
COMPUTE O15_Y=(Q30_1 + Q30_2 + Q30_3 + Q30_4)/4.
EXECUTE.
COMPUTE O15_C=(Q30_5 + Q30_6 + Q30_7 + Q30_8)/4.
EXECUTE.
COMPUTE O15_F=(Q30_9 + Q30_10 + Q30_11 + Q30_12)/4.
EXECUTE.
COMPUTE O15_PS=(Q30_13 + Q30_14 + Q30_15 + Q30_16)/4.
EXECUTE.
COMPUTE O15_A=(Q30_17 + Q30_18 + Q30_19 + Q30_20)/4.
EXECUTE.
...
COMPUTE OA_Y=(O1_Y + O2_Y + O3_Y + O4_Y + O5_Y + O6_Y + O7_Y + O8_Y + O9_Y + O10_Y + O11_Y + O12_Y
+ O13_Y + O14_Y + O15_Y + O16_Y + O17_Y + O18_Y + O19_Y + O20_Y)/20.
EXECUTE.
上面的代碼是我為其中一個項創建摘要變量的方法。 然后當我擁有所有這些時,我將它們平均在一起以獲得所有這些評級的平均值。 問題是我必須為350個項目中的每一個重新創建此代碼,這非常耗時。
似乎dplyr可以更有效地做到這一點,但我不太清楚如何。 任何幫助表示贊賞。
如果我理解你的問題,你的數據看起來像這樣:
library(tidyverse)
metadata <- tibble(Q1_1 = c(4,5,5), Q1_2 = c(2,4,7), Q1_3 = c(8,3,9),
Q2_1 = c(0,1,3), Q2_2 = c(2,7,4), Q2_3 = c(1,1,4))
metadata
#> # A tibble: 3 x 6
#> Q1_1 Q1_2 Q1_3 Q2_1 Q2_2 Q2_3
#> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 4 2 8 0 2 1
#> 2 5 4 3 1 7 1
#> 3 5 7 9 3 4 4
根據你的評論,聽起來你想要通過一些“Q#_”進行分組,然后總結所有對“Q#_”的回復(如果我錯了,請糾正我)。 你可以試試這個:
metadata %>%
gather(Q, val)%>%
group_by(Q) %>%
summarise(mean = mean(val), median = median(val), sd = sd(val))
#> # A tibble: 6 x 4
#> Q mean median sd
#> <chr> <dbl> <dbl> <dbl>
#> 1 Q1_1 4.67 5 0.577
#> 2 Q1_2 4.33 4 2.52
#> 3 Q1_3 6.67 8 3.21
#> 4 Q2_1 1.33 1 1.53
#> 5 Q2_2 4.33 4 2.52
#> 6 Q2_3 2 1 1.73
使用gather
我們將數據從寬到長,然后我們按您感興趣的變量進行分組並總結響應。 在這里,我只顯示平均值,中位數和標准差,但是你得到了圖片。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.