Сопоставление по вложенному столбцу и вычисление t-тестов между двумя группами

#r #dplyr

Вопрос:

У меня есть некоторые данные, которые выглядят так:

 # Groups:   date [4]
  date       data             
  <date>     <list>           
1 2021-01-31 <tibble [10 × 3]>
2 2021-02-07 <tibble [10 × 3]>
3 2021-02-14 <tibble [10 × 3]>
4 2021-02-15 <tibble [10 × 3]>
 

Внутри каждой вложенности data данные выглядят следующим образом:

 # A tibble: 10 × 3
      id     y     x
   <dbl> <dbl> <int>
 1     4   109     5
 2     6   116     1
 3    19   357     5
 4    22   170     5
 5    31   122     5
 6    33    23     1
 7    36    39     1
 8    38    96     5
 9    39   112     1
10    41   172     5
 

Я хотел бы сопоставить эти 4 тиббла и вычислить t-тесты между группами в столбце x . так для групп 1 и 5. Данные, которые я хочу сравнить, находятся в столбце y .

Я пытаюсь сделать это аккуратно.

Я могу сделать это за один тиббл:

 grp1 = data$data[[1]] %>% 
  filter(x == 1) %>% 
  pull(y)

grp2 = data$data[[1]] %>% 
  filter(x == 5) %>% 
  pull(y)

t.test(grp1, grp2)
 

Ответ №1:

Вы можете использовать map для перебора всех данных и выполнения t.test над ними.

 library(dplyr)
library(purrr)

df %> mutate(t_test = map(data, ~t.test(y~x, .x)))
 

Ответ №2:

С помощью base R

 df$t_test <- lapply(df$data, (x) t.test(y ~ x, data = x))