Заполнение НС манипулированием ведущими ценностями - PullRequest
0 голосов
/ 02 апреля 2019

Давайте предположим, что мои данные выглядят примерно как первые два столбца следующего фрагмента (в нем много других наблюдений).

ID  Value Value_Filled
762 2     2
762 2     2
763 NA    7
763 8     8
763 9     9

Я пытаюсь использовать dplyr, чтобы заполнить всеNA-значения для ID-группы с начальным значением минус 1 (как в столбце с именем Value_Filled).

Как мне это сделать?

Ответы [ 2 ]

2 голосов
/ 02 апреля 2019

Мы могли бы использовать mutate_at, включить столбцы для проверки аргумента vars и заменить NA в каждом столбце его значением lead минус 1.

library(dplyr)

df %>%
  group_by(ID) %>% #Maybe you need this, doesn't change anything for this example
  mutate_at(vars(Value, Value_Filled), ~ ifelse(is.na(.), lead(.) - 1, .))

#  ID Value Value_Filled
#1 762     2            2
#2 762     2            2
#3 763     7            7
#4 763     8            8
#5 763     9            9
0 голосов
/ 02 апреля 2019

Вы можете mutate новый столбец с оператором ifelse, чтобы проверить значение NA:

library(dplyr)

df <- structure(list(ID = c(762L, 762L, 763L, 763L, 763L), Value = c(2L, 
2L, NA, 8L, 9L)), class = "data.frame", row.names = c(NA, -5L
))

df_filled <- df %>% mutate(value_filled = ifelse(is.na(.$Value),as.integer(substr(as.character(.$ID),1,1)),.$Value))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...