【发布时间】:2021-08-25 22:46:00
【问题描述】:
我想删除多列中包含超过 25% NA 的所有行。由于这涉及大约 120 个相应的列,因此不指定所有列会很方便。最好是类似:columnA 和 columnZ 之间的所有内容。
我尝试过使用:
data[!is.na(data$ColumnA:data$ColumnZ), > 0.25]
但它只显示了这个错误:
必须使用有效的下标向量对列进行子集化。
逻辑下标必须与索引输入的大小匹配。
x 输入的大小为 250,但下标 !is.na(data$ColumnA:data$ColumnZ) > 0.25 的大小为 3。
(250是数据集中的实际列数)
我也考虑过尝试 drop_na,但这会导致类似的问题。
你有什么建议吗?提前谢谢你
【问题讨论】:
-
您能否通过
dput(head(data))分享您的数据的可重现样本?以便其他人可以使用它来帮助您。 -
df[rowMeans(is.na(df)) < 0.25, ] -
@alistaire,我想您仍然需要按名称或索引对列进行子集化,例如
df[rowMeans(is.na(df[,paste0("Column", LETTERS[1:26])])) < 0.25, ]