【问题标题】:Collapse rows to remove NA's折叠行以删除 NA
【发布时间】:2021-07-21 06:33:52
【问题描述】:

我有一张名为 RobertsHemp2019_20 的大桌子,看起来像这样:

'FileName' 'CBDV-a' 'CBDV' 'CBD-a'
Roberts NA NA NA
NA 413847 NA NA
NA NA 208320 NA
NA NA NA 118807

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

'FileName' 'CBDV-a' 'CBDV' 'CBD-a'
Roberts 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]} 命令。

【问题讨论】:

  • 如果您可以通过 dput(head(data)) 分享您的可重现数据片段会更好,以便其他人可以使用它来帮助您。

标签: r rows na collapse


【解决方案1】:

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

【讨论】:

  • 正如我看到的其他一些类似问题,我猜对于更大的数据集可能需要分组。
  • Anoushiravan R - 我给出的示例仅包含一个“文件名”,其中每个化合物的值在列中表示。我应该指定,但在实际数据集中 - 有很多“文件名”。所以我不能将整个数据集折叠成一行,并且可能需要分组。但是,每行只有一个非 NA 值。
  • 是的,肯定会是这样。如果您需要更多帮助,也许您应该分享更多在某种程度上说明其多样性的数据集。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 2015-12-10
  • 2016-02-04
  • 2015-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多