#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))