Как сравнить групповые средние значения с отдельными наблюдениями и создать новый столбец ИСТИНА / ЛОЖЬ? - PullRequest
1 голос
/ 24 апреля 2020

Я новичок в R, и это мой первый пост на SO - поэтому, пожалуйста, потерпите меня.

Я пытаюсь определить выбросы в моем наборе данных. У меня есть два data.frames:

(1 - исходный набор данных, 192 строки): наблюдения и их значение (AvgCon c)

(2 - создано с помощью dplyr, 24 строки) : Сгруппировать средние значения из исходного набора данных вместе с квантилями, минимальными и максимальными значениями

Я хочу создать новый столбец в исходном наборе данных, который дает значение ИСТИНА / ЛОЖЬ в зависимости от того (AvgCon c) больше максимума или меньше минимума, который я вычислил во втором data.frame. Как мне go сделать это?

Неудачная попытка:

Outliers <- Original.Data %>%
 group_by(Status, Stim, Treatment) %>%
 mutate(Outlier = Original.Data$AvgConc > Quantiles.Data$Maximum | Original.Data$AvgConc <  Quantiles.Data$Minimum) %>%
 as.data.frame()

Ошибка: столбец Outlier должен иметь длину 8 (размер группы) или единицу, а не 192

1 Ответ

0 голосов
/ 24 апреля 2020

Здесь нам нужно удалить Quantiles.Data$, выполнив объединение с «Original.Data» by, «Status», «Stim», «Treatment»

library(dplyr)
Original.Data %>%
   inner_join(Quantiles.Data %>% 
              select(Status, Stim, Treatment, Maximum, Minimum)) %>%
   group_by(Status, Stim, Treatment) %>%
   mutate(Outlier = (AvgConc > Maximum) |(AvgConc <  Minimum)) %>%
   as.data.frame()
...