如何在R中的dplyr nest中执行chisq.test

时间:2017-03-15 16:02:52

标签: r dplyr chi-squared

我无法弄清楚如何在数据框的嵌套列表列中执行chisq.test。如果我需要将数据列表列转换为矩阵,我该怎么做,然后如何正确引用chisq.test的变量?以下面的例子为例。谢谢!

以下是一个例子:

a <- rep(c('A', 'B'), 10)
b <- rep(c('a', 'b'), each = 10)
c <- as.numeric(rep(c(1:10), each = 2))
df <- as.data.frame(cbind(a, b, c)) %>% 
  mutate(c = as.numeric(c))

因子&#39; b&#39;之间的分布是否相同? (等级&#39;&#39;&#39;&#39;)与&#39; c&#39;在因子&#39;(&#39; A&#39;和&#39; B&#39;)的子组中计算?

dfnest <- df %>%
  nest(-a) %>% 
  mutate(chisq_p = map_dbl(data, ~chisq.test(.$b~.$c)$p.value))

最后一行是我想要完成的,但上面的内容不正确 - 如何在列表列数据中使用chisq.test,并将p.value插入新列?

1 个答案:

答案 0 :(得分:0)

更改chisq.test调用中的参数会返回预期结果。

df %>%
  nest(-a) %>% 
  mutate(chisq_p = map_dbl(data, ~chisq.test(.)$p.value))

您也可以使用匿名功能。

  df %>%
  nest(-a) %>% 
  mutate(chisq_p = map_dbl(data, function(f) { chisq.test(f)$p.value }))