我想有一个包含不带NA的其他列字符的列。我曾尝试paste
,str_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)
谢谢您的帮助!
这是一个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)