gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 17:29:52 24 4
gpt4 key购买 nike

我想要一个包含其他列字符而没有 NA 的列。
我试过 paste , str_cunite ,但无法得到预期的结果。也许我错误地使用了它们。

实际情况是,我无法提前知道列号,因为每个数据集都可能因年份而异。

即一些数据集包含 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

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

谢谢您的帮助!

最佳答案

这实际上是 this 的重复(或非常接近)问题但是 things have changed since then . unitena.rm有助于下降的参数 NA s。

就列的选择而言,这里我们选择了所有列,忽略第一列而不指定列名,因此它应该适用于您多年的情况。

library(tidyverse)

input %>%
unite("ALL", names(input)[-1], remove = FALSE, sep = " ", na.rm = TRUE)

# A tibble: 4 x 5
# id ALL `2017` `2018` `2019`
# <chr> <chr> <chr> <chr> <chr>
#1 aa tv tv NA NA
#2 ss web NA web NA
#3 dd book NA NA book
#4 qq web tv web NA tv

安装 tidyr 的开发版后对我有用通过做
devtools::install_github("tidyverse/tidyr")

关于r - 如何在不知道列号的情况下将多个字符列合并为一列并删除 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55214633/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com