r - 在不平衡设计中基于多个变量计算数据的均值和 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)
更简洁的方法会很有用!
解决方案
您只是没有加入cat
group 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
推荐阅读
- tuples - OCaml - Base 导致元组解构问题
- php - 使用 str_replace 的 Wordpress
- php - 强制用户在进入结账页面之前计算出货量或选择一种方法
- byobu - 命令 byobu-quiet 有什么影响
- python - 不使用递归将嵌套字典解开为简单字典
- continuous-integration - 在侦听 development_status 事件时,如何对 GitHub 操作使用依赖项缓存?
- javascript - 我想为菜单创建波浪背景
- html - 是否可以在 HTML 文件输入中预设在线图像?
- ios - 在 iOS 应用和 Rails 后端之间传递用户 ID 以进行应用内购买
- android - Xamarin Native 上的 MSAL - OnActivityResult 从未被调用,导致应用程序在 BrowserTabActivity 上挂起