如何在不知道列号的情况下将多个字符列合并为一列并删除NA

J.D*_*J.D 5 r dplyr

我想有一个包含不带NA的其他列字符的列。我曾尝试pastestr_c并且unite,也没有得到预期的结果。也许我使用不正确。

实际情况是,我无法提前知道列号,因为每个数据集可以根据年份而变化。

也就是说,有些数据集包含10年,但有些包含20年。

这是输入数据:

input <- tibble(
  id = c('aa', 'ss', 'dd', 'qq'),
  '2017' = c('tv', NA, NA, 'web'),
  '2018' = c(NA, 'web', NA, NA),
  '2019' = c(NA, NA, 'book', 'tv')
)

# A tibble: 4 x 4
  id    `2017` `2018` `2019`
  <chr> <chr>  <chr>  <chr> 
1 aa    tv     NA     NA    
2 ss    NA     web    NA    
3 dd    NA     NA     book  
4 qq    web    NA     tv    
Run Code Online (Sandbox Code Playgroud)

ALL列的期望输出是:

> output
# A tibble: 4 x 5
  id    `2017` `2018` `2019` ALL   
  <chr> <chr>  <chr>  <chr>  <chr> 
1 aa    tv     NA     NA     tv    
2 ss    NA     web    NA     web   
3 dd    NA     NA     book   book  
4 qq    web    NA     tv     web tv
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助!

akr*_*run 3

这是一个base R方法

input$ALL <- apply(input[-1], 1, function(x) paste(na.omit(x), collapse=" "))
input$ALL
#[1] "tv"     "web"    "book"   "web tv"
Run Code Online (Sandbox Code Playgroud)