我有这种类型的数据集与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实现这一点?
data.table
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
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), ]
wlzqhblo3#
一个数据表选项:
DT[ DT[, apply(.SD, 1, \(x) any(!is.na(x))), .SDcols = q1:q3] ]
3条答案
按热度按时间bn31dyow1#
exdqitrt2#
或者让它成为名字的不可知论者:
wlzqhblo3#
一个数据表选项: