Для столбца в R-кадре данных, даже если одно значение не является NA, тогда заменить все NA на это значение? - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть фрейм данных в R с более чем 20 столбцами и несколькими миллионами строк.Для данного идентификатора информационный кадр может иметь около 100 наблюдений.Я создал этот фрейм данных, объединив два фрейма данных.Таким образом, для данного идентификатора, для столбца с указанием даты, даже если одно из значений не является NA, я хочу заменить все значения NA в столбце даты для этого идентификатора на найденное мной значение.Этот столбец сгенерирован мной в каком-то другом коде, поэтому он может иметь одно уникальное значение или NA и ничего больше.

Ближайший похожий вопрос, который я смог найти, был this .

Это лучшее решение, которое я мог бы придумать, но я уверен, что есть более элегантный способ сделать это:

merged_df <- merged_df %>%
    filter(isAMI == 1) %>%
    group_by(accountnumber) %>% 
    mutate(amiStartDate = if_else(id == 1,
                                  amiStartDate[!is.na(amiStartDate)][1],
                                  amiStartDate))

Основная идея заключается в том, что я нахожу правильные местагде я хотел бы внести изменения и изменить все записи, соответствующие значениям NA.

1 Ответ

0 голосов
/ 12 сентября 2018

Хотелось бы что-нибудь подобное для вас?

library(magrittr)
dta = data.frame(
  id = c(1,1,1,1,2,2,2,2),
  value = c(rep(NA, 3), 2, 1, NA, NA, NA)
) 

dta %>%
  dplyr::group_by(id) %>%
  dplyr::mutate(
    value = max(value, na.rm = TRUE)
  )
#> # A tibble: 8 x 2
#> # Groups:   id [2]
#>      id value
#>   <dbl> <dbl>
#> 1     1     2
#> 2     1     2
#> 3     1     2
#> 4     1     2
#> 5     2     1
#> 6     2     1
#> 7     2     1
#> 8     2     1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...