В моих реальных данных у меня есть несколько выбросов для нескольких переменных.Мои данные выглядят примерно так, как показано ниже, но цифры здесь совершенно случайные.Я хотел бы вытащить все точки данных, которые больше или меньше 2 SD, используя winsorization 95%.
df <- read.csv(header=TRUE, text="
id, group, test1, test2
1, 0, 57, 82
2, 0, 77, 80
3, 0, 67, 90
4, 0, 15, 70
5, 0, 58, 72
6, 1, 18, 44
7, 1, 44, 44
8, 1, 18, 46
9, 1, 20, 44
10, 1, 14, 38")
Мне известна функция winsorize в пакете robustHD, но яне уверен: как обеспечить, чтобы винсоризация учитывала две разные группы и включала несколько переменных в эту винсоризацию.
Я пробовал этот код для решения проблемы, но код не завершен:
library(robustHD)
library(dplyr)
new.df.wins = df %>%
group_by(group) %>%
mutate(measure_winsorized = winsorize(c(test1,test2)))
Возвращается ошибка, указывающая
Error: Column `measure_winsorized` must be length 45 (the group size) or one, not 90
Я открыт для других идей.Спасибо!