我想进行Wilcoxon测试,以比较3个测试组(B,C和D)与对照组(A)
数据以以下格式组织:
Group CustomerID Value
A 23483 61
A 23484 54
A 23485 57
A 23486 59
A 23487 69
A 23488 69
B 23489 57
B 23490 53
B 23491 68
B 23492 59
B 23493 57
C 23494 58
C 23495 70
C 23496 69
C 23497 62
C 23498 53
D 23499 65
D 23500 62
D 23501 60
D 23502 62
D 23503 63
D 23504 68
到目前为止,我已经在下面编写了代码
#Seperate Control Data
DataControl<- Data%>%
select(Group,Value)%>%
filter(Group =="A")
#Filter data
Data%>%
filter(Group!="A")%>%
select(Group,Value)%>%
group_by(Group)
summarise(p_value = wilcox.test(DataControl$Value,exact =FALSE)$p.value)
但是我遇到以下错误
Error in summarise_(.data, .dots = compat_as_lazy_dots(...)) :
argument ".data" is missing, with no default
所需的输出应为
Group P-value
B 0.04
C 0.10
D 0.01
答案 0 :(得分:2)
除了缺少管道运算符(如@OlliePerkins指出的那样)之外,您还缺少wilcox.test
调用中的一个参数:
Data %>%
filter(Group != "A") %>%
group_by(Group) %>%
summarise(p_value = wilcox.test(DataControl$Value, Value, exact = FALSE)$p.value)
# A tibble: 3 x 2
# Group p_value
# <fct> <dbl>
# 1 B 0.355
# 2 C 0.782
# 3 D 0.470
请注意,select(Group, Value)
不是必需的。
答案 1 :(得分:1)
有一个内置的成对函数;我从那里开始。然后整理一下,然后挑选您需要的东西。
请注意,我的代码(以及您的代码)也无法正确进行多次比较。您应该考虑这里是否合适。
#include <stdio.h>
#include <mpi.h>
int main(int argc, char *argv[])
{
int myrank, procs, n = 4;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
MPI_Comm_size(MPI_COMM_WORLD, &procs);
int aPart[n/procs][n];
int bPart[n][n/procs];
int a[n][n];
int b[n][n];
if(myrank == 0)
{
int temp = 0;
for(int i=0; i<n; i++) {
for(int j=0;j<n;j++) {
a[i][j] = temp;
temp++;
}
}
/*
printf("Two Dimensional array elements:\n");
for(int i=0; i<n; i++) {
for(int j=0;j<n;j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}*/
}
MPI_Scatter(&a,(n * (n/procs)),MPI_INT,&aPart,(n * (n/procs)),MPI_INT,0,MPI_COMM_WORLD);
printf("%d \n",myrank);
for(int i=0; i<n; i++) {
for(int j=0;j< n/procs ;j++) {
bPart[i][j] = aPart[j][i];
}
}
printf("\n");
for(int i=0; i<n/procs; i++) {
for(int j=0;j<n;j++) {
printf("%d ", bPart[i][j]);
}
}
printf("\n");
MPI_Gather(bPart,(n * (n/procs)),MPI_INT,b,(n * (n/procs)),MPI_INT,0,MPI_COMM_WORLD);
if(myrank == 0)
{
printf("B \n");
for(int i=0; i<n; i++) {
for(int j=0;j<n;j++) {
printf("%d ", b[i][j]);
}
printf("\n");
}
}
MPI_Finalize();
return 0;
}
答案 2 :(得分:0)
问题之一是被注释的问题(缺少%>%
),其次是仅提供了“ x”,而不是wilcox.test
中的“ y”
Data %>%
filter(Group != "A") %>%
group_by(Group) %>%
summarise(p_value = wilcox.test(Value, Data$Value[Data$Group == "A"] )$p.value)
# A tibble: 3 x 2
# Group p_value
# <chr> <dbl>
#1 B 0.355
#2 C 0.782
#3 D 0.470