如何进行Wilcox检验,考虑R中的每4行?

rjjhvcjd  于 2023-03-10  发布在  其他
关注(0)|答案(1)|浏览(98)

我有一个非常大的数据框架,由两个变量(这里是A和B)和134,000个观测值(134,000/4 = 33,500组)组成。
我不太确定如何让我的代码运行配对wilcox.test,但是当应用于每四行时。作为示例数据,我想比较A和B,但是考虑第一个输出的行1:4,第二个输出的行5:8,第三个输出的行9:12。

df1 <- as.data.frame(cbind(A = c(0.67, 0.45,0.76, 0.67, 0.56, 0.88, 0.34, 0.56, 0.35, 0.45, 0.67, 0.87), 
      B = c(0.45, 0.54, 0.67, 0.86, 0.23, 0.56, 0.34, 0.66, 0.21, 0.55, 0.56, 0.45)))

仅适用于一行

check <- wilcox.test(unlist(df1[1:4, 1]), unlist(df1[5:8, 2]))

我可以看到有一些例子,其中 Dataframe 是宽格式(所以将是A1,A2,A3,A4,B1,B2,B3,B4)Run wilcoxon rank sum test on each row of a data frame,但我宁愿保持它在长格式,如果可能的话。
如有任何指导,将不胜感激。

6rqinv9w

6rqinv9w1#

我们可以通过使用gl创建的分组进行拆分,并将wilcox.test应用于每个list元素

lapply(split(df1, as.integer(gl(nrow(df1), 4, nrow(df1)))), 
      function(x) wilcox.test(x$A, x$B))

相关问题