我是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多个群组,这就是为什么我想要一个循环。
谢谢您的回答
洗礼池
答案 0 :(得分:0)
我认为这会回答您的问题。我不知道这是否是您想要的chi ^ 2测试类型,但是您可以随时更改该功能。我使用group_by
包中的mutate
和dplyr
并编写了一个函数来执行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