小编mpa*_*ino的帖子

使用`dplyr :: group_by()获取几个组的`chisq.test()$ p.value`

我正在尝试对dplyr框架内的几个组进行卡方检验.问题是, group_by() %>% summarise()似乎没有办法.

模拟数据(与有问题的数据结构相同,但随机,因此p值应该很高)

set.seed(1)
data.frame(partido=sample(c("PRI", "PAN"), 100, 0.6),
       genero=sample(c("H", "M"), 100, 0.7), 
       GM=sample(c("Bajo", "Muy bajo"), 100, 0.8)) -> foo
Run Code Online (Sandbox Code Playgroud)

我想比较GM定义的几个组,看看partido和genero的交叉表的p.values是否有变化,以GM为条件.

明显的dplyr方式应该是:

foo %>% 
  group_by(GM) %>% 
  summarise(pvalue=chisq.test(.$partido, .$genero)$p.value)  #just the p.value, so summarise is happy
Run Code Online (Sandbox Code Playgroud)

但是我得到了未分组数据的p.values,只是时间,而不是每个表的p.value:

# A tibble: 2 × 2 GM pvalue <fctr> <dbl> 1 Bajo 0.8660521 2 Muy bajo 0.8660521

使用过滤器测试每个组我得到:

foo %>% 
  filter(GM=="Bajo") %$% 
  table(partido, genero) %>% 
  chisq.test()
Run Code Online (Sandbox Code Playgroud)

返回: X-squared = 0.015655, df = 1, p-value = 0.9004

foo %>% 
  filter(GM=="Muy bajo") …
Run Code Online (Sandbox Code Playgroud)

r chi-squared dplyr tidyverse

3
推荐指数
1
解决办法
1766
查看次数

标签 统计

chi-squared ×1

dplyr ×1

r ×1

tidyverse ×1