У меня есть некоторые значения, которые обозначаются как часть групп.Проблема с использованием dplyr для изменения значений указанных групп
В некоторых группах распространение значений слишком велико.
Я хочу настроить нижние значения этих групп.
я могу генерировать некоторые синтетические данные, как так:
groups <- floor(runif(1000,1,100))
values <- rnorm(1000,0,1)
df <- data.frame(group=groups,val=values)
Давайте найти группы, представляющие интерес:
groups_to_adjust <- df %>% group_by(group) %>% summarise(diff=max(val)-min(val)) %>% filter(diff>4) %>% select(group)
Я думаю я могу настроить их так:
df <- df %>% rowwise() %>% mutate(val=ifelse(group %in% groups_to_adjust, ifelse(val<0,val+4,val), val))
Но НЕТ! это не работает?
Использование
df %>% rowwise() %>% filter(group %in% groups_to_adjust)
указывает на то, что оператор %in%
является, по сути, не выбирая ни одной строки на всех.
Как выполнить эту операцию?
Dang! Слишком легко. Спасибо :-) – Richard
Есть ли способ упростить этот вид операции? – Richard
@Richard Вы можете использовать 'filter' (обновленный пост) – akrun