如何在R中的数据帧的每一列中过滤NA

mya*_*cia 3 r dplyr

我有一个小玩意儿

DF_TEST = tibble('country'=c('a','a','a','a'),
'id'=c(3,3,3,3),
'shop'=c('dmart','dmart','dmart','dmart'),
'beef'=c(23,NA,NA,NA),
'eggs'=c(NA,33,NA,NA),
'fork'=c(NA,NA,10,NA),
'veg'=c(NA,NA,NA,40))
Run Code Online (Sandbox Code Playgroud)

这里的输出为,

  country    id shop   beef  eggs  fork   veg
  <chr>   <dbl> <chr> <dbl> <dbl> <dbl> <dbl>
1 a           3 dmart    23    NA    NA    NA
2 a           3 dmart    NA    33    NA    NA
3 a           3 dmart    NA    NA    10    NA
4 a           3 dmart    NA    NA    NA    40
Run Code Online (Sandbox Code Playgroud)

我想通过保留一个侧面 NA 来转换这个 tibble 如下

  country    id shop   beef  eggs  fork   veg
  <chr>   <dbl> <chr> <dbl> <dbl> <dbl> <dbl>
1 a           3 dmart    23    33    10    40
Run Code Online (Sandbox Code Playgroud)

你能写下你的建议如何完成吗?

tmf*_*mnk 5

一种dplyr解决方案可能是:

DF_TEST %>%
 group_by_at(1:3) %>%
 summarise_all(~ first(na.omit(.)))

  country    id shop   beef  eggs  fork   veg
  <chr>   <dbl> <chr> <dbl> <dbl> <dbl> <dbl>
1 a           3 dmart    23    33    10    40
Run Code Online (Sandbox Code Playgroud)