Chisq测试R:数据帧中的多个组

时间:2018-07-10 14:50:09

标签: r

我是R语言的新手,正在尝试进行一些统计测试。

我的数据如下:

Name    Freqeunce   Target  Total
Steve   1   A   11
Marcel  1   A   11
Marie   1   A   11
John    2   A   11
Max     2   A   11
Alice   4   A   11
Mariane 1   B   1
Rose    1   C   3
Carla   1   C   3
Happy   1   C   3

我想实现每种目标类型(A,B和C)同质的Chi2。

我想知道R是否有可能运行循环,以将每个名称的p.value写入一列中,还是我必须先提取信息然后实现Chi2? 目的是识别根据频率在组中较少代表哪个不同的名称。并且有2000多个群组,这就是为什么我想要一个循环。

谢谢您的回答

洗礼池

1 个答案:

答案 0 :(得分:0)

我认为这会回答您的问题。我不知道这是否是您想要的chi ^ 2测试类型,但是您可以随时更改该功能。我使用group_by包中的mutatedplyr并编写了一个函数来执行chi ^ 2测试并提取pvalue。

library(dplyr)
df <- read.table("test2.txt", header = T)

c2_all <- function(x,y){
  mat <- matrix(c(x,y),nrow = 2)  
  c2 <- chisq.test(mat)
  return(c2$p.value)
}

result <- df2 %>% group_by(Target) %>% mutate(pvalue = c2_all(Name,Freqeunce))

result
# A tibble: 11 x 5
# Groups:   Target [3]
   Name    Freqeunce Target Total pvalue
   <fct>       <int> <fct>  <int>  <dbl>
 1 Steve           1 A         11  0.285
 2 Marcel          1 A         11  0.285
 3 Marie           1 A         11  0.285
 4 John            2 A         11  0.285
 5 Max             2 A         11  0.285
 6 Alice           4 A         11  0.285
 7 Sarah           2 B          3  1.00 
 8 Mariane         1 B          3  1.00 
 9 Rose            1 C          5  0.223
10 Carla           3 C          5  0.223
11 Happy           1 C          5  0.223