首页 > 解决方案 > 折叠行以删除 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]}命令。

标签: rrowsnacollapse

解决方案


此代码适用于您的示例数据集,但您需要提供更大的示例数据,以便解决方案更加通用。在此示例数据中,您有 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


推荐阅读