我在R中有一个DF,有50个唯一的A和B组合. 对于A和B的每一种组合,我想执行Kruskal-Wallis测试:kruskal.test(D,C,data = df)

我想测试A和B需要哪些组合来拒绝零假设.

我如何才能做到这一点,而不作出单独的测试,每一个组合? 我的数据示例如下

A     B       C     D
mix1 size1    1     0.2
mix1 size1    2     0.15
mix1 size1    3     0.22
mix1 size1    4     0.215
mix2 size1    1     0.2
mix2 size1    2     0.15
mix2 size1    3     0.2
mix2 size1    4     0.15
mix2 size2    1     0.21
mix2 size2    2     0.11
mix2 size2    3     0.23
mix2 size2    4     0.615
...
mix22 size1    1     0.01
mix22 size1    2     0.18
mix22 size1    3     0.7
mix22 size1    4     0.17

我的预期输出是df/table,其中包含A和B的每种组合的Kruskal-Wallis检验的p值.

A     B    P
mix1 size1 0.005
mix2 size1 0.211

也许是用*apply大家庭里的东西?

推荐答案

by中使用interaction.

> by(dat, with(dat, interaction(A, B)), \(x) {
+   with(x, kruskal.test(D, C))[c('statistic', 'parameter', 'p.value')]
+ }) |> do.call(what='rbind')
            statistic parameter p.value
mix1.size1  2379      3         0      
mix2.size1  2620      3         0      
mix22.size1 2460      3         0      
mix2.size2  2537      3         0      

Data:

> dput(dat)
structure(list(A = c("mix1", "mix1", "mix1", "mix1", "mix2", 
"mix2", "mix2", "mix2", "mix2", "mix2", "mix2", "mix2", "mix22", 
"mix22", "mix22", "mix22"), B = c("size1", "size1", "size1", 
"size1", "size1", "size1", "size1", "size1", "size2", "size2", 
"size2", "size2", "size1", "size1", "size1", "size1"), C = c(1L, 
2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L), 
    D = c(0.2, 0.15, 0.22, 0.215, 0.2, 0.15, 0.2, 0.15, 0.21, 
    0.11, 0.23, 0.615, 0.01, 0.18, 0.7, 0.17)), class = "data.frame", row.names = c(NA, 
-16L))

R相关问答推荐

将Multilinetring合并到一个线串中,使用sf生成规则间隔的点

卸载安装了BRM的模型发出的警告

使用ggplot将平滑线添加到条形图

如何修复R码的置换部分?

ggplot2中的X轴显示数值,单位为百,而不是十

如何调整曲线图中的y轴标签?

使用较长的查询提取具有部分匹配的列表中的较短目标,

通过在colname中查找其相应值来创建列

为了网络分析目的,将数据框转换为长格式列联表

SHINY:使用JS函数应用的CSS样式显示HTML表格

用两种 colored颜色 填充方框图

在gggraph中显示来自不同数据帧的单个值

仅当后续值与特定值匹配时,才在列中回填Nas

R仅当存在列时才发生变异

Ggplot2如何找到存储在对象中的残差和拟合值?

分隔日期格式为2020年7月1日

R dplyr::带有名称注入(LHS of:=)的函数,稍后在:=的RHS上引用

具有由向量定义的可变步长的序列

在一个multiplot中以非对称的方式在R中绘制多个图

在具有条件的循环中添加行