【发布时间】:2018-01-06 18:12:19
【问题描述】:
我有一个 data.frame,其中大部分是 NA 值和一些数据。要清理它,我只需要选择并复制所有 NA 值(不是包括 NA 的行或列,而只是值)。这似乎是一项简单的任务,但到目前为止我尝试过的任何解决方案都没有奏效。我想明确指出,我不想在结果变量/文件中保持行数不变,而是逐列逐列删除所有 NA 值。好像这些列在其中单独列出,我会将包含信息/值的所有单元格排序到顶部,并将所有不适用的单元格排序到底部。
谢谢。
更新示例:
Col 1 Col 2 Col 3
Bar NA But
NA There NA
Foo NA NA
NA NA Not
NA NA NA
Here NA NA
NA Better NA
想要的结果:
Col1 Col2 Col3
Bar There But
Foo Better Not
Here
我需要保持列不变,但列内的所有值都应该向上移动。因此,如果我可以选择所有非 NA 值并将它们粘贴到一个新的数据框(或其他任何内容)中,该数据框包含相同数量的列,但只有值,没有 NA。
希望它更清楚。谢谢。
【问题讨论】:
-
请提供reproducible example以及预期输出
-
如果没有示例就无法真正理解,但也许您可以循环/应用所有列,并为每一步将新列插入列表?
-
对我来说完全不清楚,但也许你正在寻找
which(is.na(df),arr.ind=TRUE)(虽然猜测很疯狂;提供一个例子!) -
你想要的输出有点奇怪。如果每个列都有不同数量的非 NA 值会发生什么?结果最好有
list。您可以让它应用@Florian 答案 (lapply(df,function(x) x[!is.na(x)])) 中建议的第一行。 -
Jep,我知道这很奇怪,这就是为什么我还没有找到答案。将其视为行号无关紧要的清洁工作,所有信息都在单元格中。我只需要获取所有具有值的单元格并保持我的 255 行完整。任何实现这一目标的方法都会很棒。