заменить значение на предыдущее значение в векторе, если предыдущее значение> значение - PullRequest
0 голосов
/ 05 апреля 2019

Я довольно плохо знаком с R и не могу решить следующую проблему: В моем фрейме данных df мне нужно заменить значения в векторе на предыдущее значение в том же векторе, если они ниже, чем значения в предыдущем ряду.Это нужно сгруппировать по ID.

Пример DF выглядит следующим образом:

ID x
1 2
1 2
1 4
1 2
1 1
2 NA
2 4
2 2

и я хочу, чтобы это выглядело так:

ID x
1 2
1 2
1 4
1 4
1 4
2 NA
2 4
2 4

Я пробовал следующий код:

df <- df %>%
  group_by(ID) %>%
  mutate(x= replace(x, x< lag(x), lag(x)))`

Но я получаю эту ошибку:

Ошибка в mutate_impl (.data, dots): Ошибка оценки: недопустимые NA в подписанных назначениях.

Как я могу решить эту проблему (благосклонно с dplyr)

1 Ответ

0 голосов
/ 05 апреля 2019

Я бы попробовал:

df <- df %>%
  filter(!is.na(x))  %>%
  mutate(x= if_else(x< lag(x), lag(x), x))

Надеюсь, что это работает для вас!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...