Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 用其他列中的值填充na_R_Dplyr - Fatal编程技术网

R 用其他列中的值填充na

R 用其他列中的值填充na,r,dplyr,R,Dplyr,我正在制作一个TIBLE,我想用第六列中的值在5列中填写na。看起来很低: 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

我正在制作一个TIBLE,我想用第六列中的值在5列中填写na。看起来很低:

    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
Triu 1 Triu 2 Triu 3 Triu 4 Triu 5平均缺失
1     5    33    62    80    29               0
2 NA 27 55 47 8 1
3 NA 6 45 112 4 1
4 NA 3 12 21 0
53359336NA 2
6NA 10544910
7 NA 18 42 48 11 1
8NA 20516290
9 NA 25 97 119 6 0
10 NA 45 95 59 6 2

我尝试用ifelse-na替换_-na()和mutate,但它似乎不适用于多列替换。

我们可以使用
mutate_at
以及
start_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()

我们可以使用
mutate\u at
start\u with
来选择列名,然后使用
if\u 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()