删除具有 NA 值的单元格(不是列,没有行,不是修剪)

问题描述 投票:0回答:1

假设我有以下数据集:

A B C
1 不适用 不适用
不适用 2 不适用
不适用 不适用 3

我正在努力

A B C
1 2 3

这个的上下文是我有这样一个数据集,其中如果 A 非空,则有值,B/C 始终为 NA,B/C 也是如此。而且ABC的长度也不一样。

然后我用这些值来计算与库(bayestestR)中的重叠(x,y)的重叠系数。但是,如果我保留 NA,则重叠(a,a)(即同一组)的结果不是 1,而是 0.98 或类似的值。我不知道该怎么办。请指教!预先感谢。

如果有人有关于如何提示重叠()忽略 NA 的提示,我想这也会起作用!

我试过了

df <- data.table(df)[, lapply(.SD, function(x) x[order(is.na(x))])]
df[!result[, Reduce(`&`, lapply(.SD, is.na))]]
df[complete.cases(df), ]

但它仍然留下了 NA 值,甚至有很多行的所有值都是 NA!这段代码有助于将所有非 NA 值移到顶部,但 NA 仍然在那里。

dplyr na
1个回答
0
投票

一个更大的例子会有所帮助,但尝试使用

dplyr::reframe()
和已经建议的(@benson23)
na.omit()

aux <- tribble(
    ~a, ~b, ~c,
     1, NA, NA,
     1, NA, 31,
    NA,  2, NA,
    NA, NA,  3,
    11, NA, NA)

aux <- reframe(aux, across(everything(), \(x) unique(na.omit(x))))

# A tibble: 2 × 3
    a     b     c
<dbl> <dbl> <dbl>
    1     2    31
   11     2     3
© www.soinside.com 2019 - 2024. All rights reserved.