首页 > 解决方案 > 在不平衡设计中基于多个变量计算数据的均值和 se

问题描述

我正在尝试计算数据集上的一些汇总统计数据,其中感兴趣的单位并未出现在每个事件中,但重要的是要在计算中考虑每个事件,例如平均值。我有以下数据(t2)

ca  cat spp eg  len cou
a1  bd  a   y   62  1
a1  bd  a   y   63  2
a1  bd  a   y   66  1
a1  br  b   y   260 1
a2  bd  a   y   61  1
a2  bd  a   y   62  1
a2  bd  b   y   200 1
a2  bd  b   y   201 1
a2  bd  c   y   55  1
a2  bd  c   y   50  2
a3  mr  a   n   66  1
a3  bd  a   n   60  1
a3  bd  a   n   59  1
a3  bd  c   n   50  1
a4  mr  a   n   66  1
a4  mr  a   n   67  1
a5  bd  a   n   64  1

我能够计算整体均值

t2 %>% 
  mutate(nca=n_distinct(ca)) %>% 
  group_by(spp) %>% 
  summarise(av = sum(cou)/first(nca))

返回

spp av
a   2.4         
b   0.6         
c   0.8

但是我没有成功,因为它们在 ca 和 eg 之间缺乏平衡,所以计算按 eg 的水平分组的平均值。这是我尝试过的

t2 %>% 
  group_by(eg) %>% 
  mutate(nca=n_distinct(ca)) %>% 
  group_by(spp, eg) %>% 
  summarise(av = sum(cou)/first(nca))

返回

spp eg    av
a   n   2.0000000       
a   y   3.0000000       
b   y   1.5000000       
c   n   0.3333333       
c   y   1.5000000

显然只有 y 水平是正确的。任何用标准错误简洁地做到这一点的帮助将不胜感激(最好使用 dplyr)。

正确的数据看起来像

cat    spp    av    eg
bd  a   3.0000000   y   
bd  b   1.0000000   y   
bd  c   1.5000000   y   
br  b   0.5000000   y   
bd  a   1.0000000   n   
bd  c   0.3333333   n   
mr  a   1.0000000   n

我通过例如(y或n)计算统计数据并重新加入来拆分数据来计算

t2y<- t2 %>% 
  filter(eg%in%"y") %>%
  mutate(nca=n_distinct(ca)) %>%  
  group_by(cat, spp) %>% 
  summarise(av=sum(cou/nca))%>% 
  mutate(eg="y")

t2n<- t2 %>% 
  filter(eg%in%"n") %>%
  mutate(nca=n_distinct(ca)) %>%  
  group_by(cat, spp) %>% 
  summarise(av=sum(cou/nca)) %>% 
  mutate(eg="n")

full_join(t2y, t2n)

更简洁的方法会很有用!

标签: rdplyr

解决方案


您只是没有加入catgroup by 吗?

t2 %>%
    group_by(eg) %>%
    mutate(nca=n_distinct(ca)) %>%
    group_by(cat, spp, eg) %>%
    summarise(av = sum(cou)/first(nca)) %>%
    arrange(desc(eg))

它给:

  cat   spp   eg       av
  <chr> <chr> <chr> <dbl>
1 bd    a     y     3    
2 bd    b     y     1    
3 bd    c     y     1.5  
4 br    b     y     0.5  
5 bd    a     n     1    
6 bd    c     n     0.333
7 mr    a     n     1    

推荐阅读