У меня есть данные, которые содержат индекс и сезон и хотели бы дискретизировать эти данные. Я создал некоторые поддельные данные для демонстрации:Применение ifelse с переменной группировки
data_frame <- data.frame(index=c(10,233.2,12,44,56,232,1.4,43,76,89,20.3,23), season=c('Fall','Winter','Fall','Summer','Winter','Spring','Spring','Summer','Winter','Spring','Summer','Fall'))
data_frame
index season
1 10.0 Fall
2 233.2 Winter
3 12.0 Fall
4 44.0 Summer
5 56.0 Winter
6 232.0 Spring
7 1.4 Spring
8 43.0 Summer
9 76.0 Winter
10 89.0 Spring
11 20.3 Summer
12 23.0 Fall
Поскольку в моих исходных данных, распределение для каждого сезона отличается, я хотел бы Дискретизирую индекс группировку переменного сезона. Я дискретирую данные, назначая 1 для чего-либо выше 75-го процентиля для группы и 0 для чего-либо ниже.
Я хотел бы следующий вывод:
index season disc
1 10.0 Fall 0
2 233.2 Winter 1
3 12.0 Fall 0
4 44.0 Summer 1
5 56.0 Winter 0
6 232.0 Spring 1
7 1.4 Spring 0
8 43.0 Summer 0
9 76.0 Winter 0
10 89.0 Spring 0
11 20.3 Summer 0
12 23.0 Fall 1
Я знаю, как найти результат, но не в том формате, что мне нужно. Я использую функцию tapply
для Дискретизирую мои переменный:
tapply(data_frame$index, data_frame$season, function(x) ifelse(x>quantile(x,0.75),1,0))
$Fall
[1] 0 0 1
$Spring
[1] 1 0 0
$Summer
[1] 1 0 0
$Winter
[1] 1 0 0
Как бы произвести вывод, что мне нужно?
'пр (data_frame $ индекс, data_frame $ сезон, FUN = функция (х) IfElse (x> quantile (x, 0,75), 1,0)) '? – Frank
geez, я забыл про 'ave'. Не могли бы вы ответить на этот вопрос? – Michal
Np, я вроде как подозреваю, что этот вопрос является обманом, поэтому я оставлю его в качестве комментария. Тем не менее, кто-то может свободно конвертировать его в ответ, если захочет. Я бы предложил заняться 'dplyr' или' data.table', если вам нужно часто делать групповые вещи. – Frank