首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >一组与多组的t检验

一组与多组的t检验
EN

Stack Overflow用户
提问于 2020-04-06 15:47:41
回答 4查看 59关注 0票数 2

我有下面的泰伯

代码语言:javascript
运行
复制
test_tbl <- tibble(name = rep(c("John", "Allan", "George", "Peter", "Paul"), each = 12),
                   category = rep(rep(LETTERS[1:4], each = 3), 5),
                   replicate = rep(1:3, 20),
                   value = sample.int(n = 1e5, size = 60, replace = T))


# A tibble: 60 x 4
   name  category replicate value
   <chr> <chr>        <int> <int>
 1 John  A                1 71257
 2 John  A                2 98887
 3 John  A                3 87354
 4 John  B                1 25352
 5 John  B                2 69913
 6 John  B                3 43086
 7 John  C                1 24957
 8 John  C                2 33928
 9 John  C                3 79854
10 John  D                1 32842
11 John  D                2 19156
12 John  D                3 50283
13 Allan A                1 98188
14 Allan A                2 26208
15 Allan A                3 69329
16 Allan B                1 32696
17 Allan B                2 81240
18 Allan B                3 54689
19 Allan C                1 77044
20 Allan C                2 97776
# … with 40 more rows

我想要group_by(name, category)并执行三个t.test调用,比较category B、C和D与category A。

我想从输出中存储estimatep.value。预期的结果如下:

代码语言:javascript
运行
复制
# A tibble: 5 x 7
  name   B_vs_A_estimate B_vs_A_p_value C_vs_A_estimate C_vs_A_p_value D_vs_A_estimate D_vs_A_p_value
  <chr>            <dbl>          <dbl>           <dbl>          <dbl>           <dbl>          <dbl>
1 John            -0.578         0.486            0.198          0.309           0.631         0.171 
2 Allan            0.140         0.644            0.728          0.283           0.980         0.485 
3 George          -0.778         0.320           -0.424          0.391          -0.154         0.589 
4 Peter           -0.435         0.470           -0.156          0.722           0.315         0.0140
5 Paul             0.590         0.0150          -0.473          0.475           0.681         0.407

我更喜欢使用tidyverse和/或broom的解决方案。

EN

Stack Overflow用户

发布于 2020-04-06 17:07:04

我们可以用

代码语言:javascript
运行
复制
library(dplyr)
library(purrr)
library(stringr)
library(tidyr)
test_tbl %>%
    split(.$name) %>% 
    map_dfr(~ {
         Avalue <- .x$value[.x$category == 'A']
        .x %>% 
           filter(category != 'A') %>% 
           group_by(category) %>%
           summarise(out = t.test(value, Avalue)$p.value) %>% 
           mutate(category = str_c(category, '_vs_A_p_value'))}, .id = 'name') %>%
   pivot_wider(names_from = category, values_from = out)
票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61063661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档