заполнение значениями из других столбцов - PullRequest
1 голос
/ 13 апреля 2019

Я работаю над тибблом, и я хотел бы заполнить na в 5 столбцах, используя значения в шестых столбцах.Это выглядит как низкий:

    Tri_1 Tri_2 Tri_3 Tri_4 Tri_5 average_missing
   <int> <int> <int> <int> <int>           <dbl>
 1     5    33    62    80    29               0
 2    NA    27    55    47     8               1
 3    NA     6    45   112     4               1
 4    NA    NA     3    12    21               0
 5     3    35    93    36    NA               2
 6    NA    10    54    49    11               0
 7    NA    18    42    48    11               1
 8    NA    20    51    62     9               0
 9    NA    25    97   119     6               0
10    NA    45    95    59     6               2

Я попытался replace_na () и изменить его с помощью ifelse na, но, похоже, он не работает для замены нескольких столбцов.

1 Ответ

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

Мы можем использовать mutate_at вместе с starts_with, чтобы выбрать имена столбцов, затем использовать if_else

library(dplyr)
df %>% mutate_at(vars(starts_with('Tri')),funs(if_else(is.na(.),average_missing,.)))

     Tri_1 Tri_2 Tri_3 Tri_4 Tri_5 average_missing
  1      5    33    62    80    29               0
  2      1    27    55    47     8               1
  3      1     6    45   112     4               1
  4      0     0     3    12    21               0
  5      3    35    93    36     2               2
  6      0    10    54    49    11               0
  7      1    18    42    48    11               1
  8      0    20    51    62     9               0
  9      0    25    97   119     6               0
  10     2    45    95    59     6               2

Если вы хотите использовать tidyr::replace_na, тогда вам нужно rowwise() сначала

library(dplyr)
library(tidyr) 
df %>% rowwise() %>% 
       mutate_at(vars(starts_with('Tri')),funs(replace_na(.,average_missing))) %>% 
       ungroup()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...