#r #dplyr #pivot-table
#r #dplyr #сводная таблица
Вопрос:
Я надеюсь на помощь в создании средних значений для комбинаций из нескольких столбцов df с использованием dplyr, и — предполагая, что это возможно — я не могу получить правильный синтаксис.
df <- data.frame(trt1=c(replicate(6, "far"), replicate(6, "near")),
trt2=rep(c("A","A","A","B","B","B"), 2),
count=sample(1:8, 12, replace=T))
Я знаю, как получить средние значения по одному столбцу:
df %>% group_by(trt1) %>% summarise(avg=mean(count))
Но не могу понять синтаксис для комбинаций столбцов: далеко x A, далеко x B, рядом с x A, рядом с x B.
Большое спасибо.
Ответ №1:
Добавьте trt2 в инструкцию group_by.
df %>% group_by(trt1,trt2) %>% summarise(avg=mean(count))
trt1 trt2 avg
<fctr> <fctr> <dbl>
1 far A 3.000000
2 far B 1.333333
3 near A 5.000000
4 near B 4.666667
Комментарии:
1. МО*#@@*КЕР! Я пытался сделать это df %>%group_by(trt1) %>% group_by(trt2) %>% summarise (среднее значение (количество))
2. Большое спасибо — моя головная боль внезапно прошла.
Ответ №2:
Простая линейная модель также дает ответ в этом случае (просто напомню об удалении перехвата для получения правильных контрастов) (я немного настроил, чтобы придать dplyr вид)
df %>% lm(count~trt1:trt2-1, .) %>% .$coef
#### trt1far:trt2A trt1near:trt2A trt1far:trt2B trt1near:trt2B
#### 4.000000 4.333333 4.000000 4.666667
(поскольку нет начального значения для определения ваших данных.Фрейм, результат отличается от других ответов)