2017-08-30 2 views
1

J'ai un data.frame qui a 2 facteurs; un appelé kernel_type (avec 3 niveaux: b, e et p) et un appelé group_by_var (avec 3 niveaux: tw, fif, sev). La première colonne de l'ensemble de données s'appelle levels_together et contient des nombres.R: signifie plus de deux facteurs

J'ai une seconde data.frame avec la même structure, avec des nombres différents dans la colonne levels_together.

Ils ressemblent à ceci:

levels_together group_by_var kernel_type 
1    0.051  tw  b 
2    0.055  tw  b 
3    0.053  fif b 
4    0.046  fif b 
5    0.053  sev b 
6    0.050  sev b 
7    0.059  tw  e 
8    0.056  tw  e 
9    0.052  fif e 
10   0.044  fif e 
11   0.058  sev e 
12   0.053  sev e 
13   0.052  tw  p 
14   0.053  tw  p 
15   0.051  fif p 
16   0.044  fif p 
17   0.051  sev p 
18   0.050  sev p 

je voudrais la moyenne des levels_together pour tw dans les b; pour fif dans les b, etc. Les trois premiers chiffres définitifs devraient être:

0,053 (moyenne de tw dans les b) 0,0495 (moyenne de fif dans les b) 0,0515 (moyenne de SEV dans les b)

Comment puis-je accomplir ceci avec une fonction d'application?

+1

rbind deux dataframes, si plus de 2 dataframes voir [cet article] (https://stackoverflow.com/questions/2851327/convert-a-list-of -data-frames-into-one-data-frame) sur la façon de lier plusieurs dataframes. Ensuite, utilisez la réponse postée par @ G5W. – zx8754

Répondre

2

Vous pouvez le faire avec aggregate

aggregate(levels_together ~ group_by_var + kernel_type, data=df, FUN=mean) 
    group_by_var kernel_type levels_together 
1   fif   b   0.0495 
2   sev   b   0.0515 
3   tw   b   0.0530 
4   fif   e   0.0480 
5   sev   e   0.0555 
6   tw   e   0.0575 
7   fif   p   0.0475 
8   sev   p   0.0505 
9   tw   p   0.0525