R 如何从数据框中包含90%Na的数据集中删除Na值

R 如何从数据框中包含90%Na的数据集中删除Na值,r,R,您好,我需要有关如何从数据框中删除NA值的帮助。。我的数据集有90%的na值。。在几乎每一行和每一列中。。当我尝试使用na.omit、complete.cases、na.rm=true和许多其他选项时,但是当我使用它们时,我的所有行都被删除了。。我的项目需要帮助。 多谢各位 第二部分 非常感谢你。非常洞察完整且是按照您的说明执行后,输出为是所有行至少包含一个NA值,这就是我无法使用NA.Omit或任何其他函数的原因。。现在怎么纠正呢 即使看不到数据的一小部分,也很难帮助您。但从您描述的情况来看,

您好,我需要有关如何从数据框中删除NA值的帮助。。我的数据集有90%的na值。。在几乎每一行和每一列中。。当我尝试使用na.omit、complete.cases、na.rm=true和许多其他选项时,但是当我使用它们时,我的所有行都被删除了。。我的项目需要帮助。 多谢各位

第二部分
非常感谢你。非常洞察完整且是按照您的说明执行后,输出为是所有行至少包含一个NA值,这就是我无法使用NA.Omit或任何其他函数的原因。。现在怎么纠正呢

即使看不到数据的一小部分,也很难帮助您。但从您描述的情况来看,似乎有太多的行具有
NA
,例如,使用
NA.ommit
,即使只有一行单元格是
NA
,也会删除整行,这将有效地清空整个数据帧。您可以轻松检查有多少行具有
NA
值:

有多少行包含NA

sum(rowSums(is.na(df)) > 0)
每一行是否包含
NA

nrow(df) == sum(rowSums(is.na(df)) > 0) 
如果此测试的计算结果为
TRUE
,则实际上每行至少包含一个带有
NA
的单元格。如果计算结果为
FALSE
,则至少有一行包含完整的案例

要查看哪些行不包含NA,请执行以下操作:

df[!rowSums(is.na(df)) > 0, ] 
要在
NA
自由行上创建子集,可以重用此代码:

df_new <- df[!rowSums(is.na(df)) > 0, ]
数据:

set.seed(4)

df您的预期输出是什么?正如您所说,当您90%的数据是NA,并且您使用
NA.ommit
,即使只有一行
NA
,也会删除整行数据时,很有可能什么都不会留下!请不要将已回答的问题编辑为第二个问题。我回答了这个问题,你应该考虑接受答案(通过勾选答案旁边的复选标记)并提出一个新问题。在此之前,我还建议你多看看如何提出一个好问题。非常感谢。非常洞察完整且是按照您的说明执行后,输出为是所有行至少包含一个NA值,这就是我无法使用NA.Omit或任何其他函数的原因。。现在如何纠正?请考虑接受答案。如何纠正的问题很难回答,因为我不知道您的数据以及您收集数据的方式。好的,我可以在这里上传数据吗?您总是可以发布前10行左右的数据。但你要回答的问题是:为什么我有这么多的
NA
?有没有办法避免(那么多)
NA
s?而且,最重要的是,我真的必须用
NA
删除所有行吗?(也许根本没有必要!)
df_new <- na.omit(df)
set.seed(4)
df <- data.frame(
  d1 = c(rep(NA, 3), round(rnorm(7),3)),
  d2 = c(round(rnorm(6),3), NA, round(rnorm(3),3)),
  d3 = c(round(rnorm(2),3), rep(NA,2), round(rnorm(6),3)),
  d4 = c(round(rnorm(1),3), NA, round(rnorm(8),3))
)