R -删除仅为NA的所有行

bz4sfanl  于 2023-01-06  发布在  其他
关注(0)|答案(3)|浏览(169)

我有这种类型的数据集与ID,年龄和性别,然后问题的ID的回答在一项调查:

> ID gender age Q1 Q2 Q3
  1  male   35  1  1   NA
  2  male   45  NA NA  NA
  3 female  55  NA NA  NA

我想删除所有Q都是NA的行,所以在本例中结果将是:

> ID gender age Q1 Q2 Q3
  1  male   35  1  1   NA

如何使用data.table实现这一点?

bn31dyow

bn31dyow1#

library(tidyverse)

df %>%
  filter(if_any(starts_with("Q"), ~ !is.na(.x)))

# A tibble: 1 × 6
     ID gender   age    Q1    Q2 Q3   
  <dbl> <chr>  <dbl> <dbl> <dbl> <lgl>
1     1 male      35     1     1 NA
exdqitrt

exdqitrt2#

dt[rowSums(is.na(dt[, paste0("Q", 1:3)])) != length(paste0("Q", 1:3)), ]

或者让它成为名字的不可知论者:

cols <- startsWith(colnames(dt), "Q")
dt[rowSums(is.na(dt[, ..cols])) != sum(cols), ]
wlzqhblo

wlzqhblo3#

一个数据表选项:

DT[ DT[, apply(.SD, 1, \(x) any(!is.na(x))), .SDcols = q1:q3] ]

相关问题