Значит между группами в R - PullRequest
0 голосов
/ 26 сентября 2018

Я пытался получить среднее и sd между группами в моем фрейме данных, но безуспешно.

Это легче объяснить на примере.

sample <- c("CT", "CT", "CT", "CT", "CT", "CT", "X1", "X1", "X1", "X1", "X1", "X1") 
test <- c("AS", "AS", "AS", "AS", "AS", "AS", "AS", "AS", "AS", "AS", "AS", "AS") 
replicate <- c("a", "a", "a", "a", "b", "b", "a", "a", "a", "a", "b", "b")
xvalue <- c(1,1,2,2,1,1,1,1,2,2,1,1)
moduli<- c("G1", "G2", "G1", "G2", "G1", "G2", "G1", "G2", "G1", "G2", "G1", "G2" ) 
yvalue <- c(12, 15, 34, 23, 23, 23, 54, 23, 24, 21, 12, 11)

df <- data.frame(sample, test, replicate, moduli, xvalue, yvalue)


obs. sample test replicate moduli xvalue yvalue
1      CT   AS         a     G1      1     12
2      CT   AS         a     G2      1     15
3      CT   AS         a     G1      2     34
4      CT   AS         a     G2      2     23
5      CT   AS         b     G1      1     23
6      CT   AS         b     G2      1     23
7      X1   AS         a     G1      1     54
8      X1   AS         a     G2      1     23
9      X1   AS         a     G1      2     24
10     X1   AS         a     G2      2     21
11     X1   AS         b     G1      1     12
12     X1   AS         b     G2      1     11

Что мне нужноdo группирует по sample, test, moduli и получает средства и sd yvalue между replicate.Так что в этом примере это будет среднее значение и sd между obs. 1 и 5, 2 и 6, 7 и 11, 8 и 12.

Я предполагаю, что этого можно достичь, используяaggregate и dplyr, но до сих пор не добились успеха.

Спасибо !!

1 Ответ

0 голосов
/ 26 сентября 2018

Если я вас правильно понимаю, вы хотите получить среднее значение yvalue для наблюдений 1 и 5, поскольку они принадлежат к той же группе в отношении группируемых переменных, которые вы упомянули, и xvalue, а также аналогично, наблюдения 2 и 6, ... и т. д. В этом случае вам необходимо будет также включить xvalue в качестве переменной группировки

library(dplyr)
df %>% 
  group_by(sample, test, moduli, xvalue) %>% 
  summarise(mean.y = mean(yvalue),
            sd.y = sd(yvalue))
# A tibble: 8 x 6
# Groups:   sample, test, moduli [?]
  sample test  moduli xvalue mean.y   sd.y
  <fct>  <fct> <fct>   <dbl>  <dbl>  <dbl>
1 CT     AS    G1          1   17.5   7.78
2 CT     AS    G1          2   34   NaN   
3 CT     AS    G2          1   19     5.66
4 CT     AS    G2          2   23   NaN   
5 X1     AS    G1          1   33    29.7 
6 X1     AS    G1          2   24   NaN   
7 X1     AS    G2          1   17     8.49
8 X1     AS    G2          2   21   NaN   

Это рассчитает среднее значение поотличается replicate в группе.Но SD не может быть вычислено, если у вас не более одного наблюдения в группе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...