R 用其他列中的值填充na
我正在制作一个TIBLE,我想用第六列中的值在5列中填写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
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()