Сравнение каждого значения каждой группы с минимумом группы - PullRequest
2 голосов
/ 29 апреля 2020

У меня есть данные, сгруппированные по годам. Я хотел бы заменить все данные, где x> (минимум + 2) на NA. Минимум меняется каждый год. Я думал извлечь минимум из года, используя ddply, но я не знаю, как сравнить каждое значение из каждого года с их спецификацией c минимум ...

Большое спасибо.

  New <-  Ancian %>%
group_by(Years) %>%
mutate_if(New$Data1, ~  replace(., . > (min(., na.rm = TRUE) + 2),  NA))

Я пробовал это, но это не работает ... Также пытался сделать функцию "если" после group_by, но безрезультатно ...

group_by(Years) %>%
if(New$Data1 > (min(New$Data, na.rm = TRUE) + 2)) { 
New$Data1 <- NA }

1 Ответ

1 голос
/ 29 апреля 2020

Мы можем использовать mutate_if после группировки по годам

library(dplyr)
df1update <-  df1 %>%
    group_by(years) %>%
    mutate_if(is.numeric, ~  replace(., . > (min(., na.rm = TRUE) + 2),  NA))

Если нам нужно сделать это только для одной переменной

df1update <- df1 %>%
               group_by(years) %>%
               mutate(Data1 = replace(Data1, Data1 > (min(Data1, na.rm = TRUE) + 2), NA))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...