折叠行以删除 NA

问题描述

我有一张大桌子,叫做 RobertsHemp2019_20,看起来像这样:

'文件名' 'CBDV-a' 'CBDV' 'CBD-a'
罗伯茨 不适用 不适用 不适用
不适用 413847 不适用 不适用
不适用 不适用 208320 不适用
不适用 不适用 不适用 118807

我想折叠行并删除 NA 使其看起来像这样:

'文件名' 'CBDV-a' 'CBDV' 'CBD-a'
罗伯茨 413347 208320 118807

每一行只有一个字符串或值。我想我想对每一列应用一个函数删除 NA(正如这里 https://stackoverflow.com/a/47357833/15779611 所尝试的那样)。但我是 R 新手,无法通过 collapse_column <- function(RobertsHemp2019_20,col){RobertsHemp2019_20[!is.na(RobertsHemp2019_20[,col]),col]} 命令。

解决方法

此代码适用于您的示例数据集,但您需要提供更大的示例数据,以便解决方案更加通用。在此示例数据中,您有 4 行数据和 4 列,其中只有一个非 NA 值。因此,可以将所有四行折叠为一行,但在更大的数据集中,由于每列中 NA 和非 NA 值的长度不同,输出可能不一定是单行。

library(dplyr)

df %>%
  summarise(across(everything(),~ na.omit(.x)))

# A tibble: 1 x 4
  FileName `CBDV-a`   CBDV `CBD-a`
  <chr>       <dbl>  <dbl>   <dbl>
1 Roberts    413847 208320  118807