问题描述
我有一张大桌子,叫做 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