簡體   English   中英

如何使用dplyr迭代計算匯總變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM