我想使用以下方法删除数据框“addition”中任何列中包含NA值的行:
a <- addition[complete.cases(addition), ]
并且
a <- addition[!is.na(addition)]
并且
a <- na.omit(addition)
但是NA值仍然存在。我也尝试仅限包含一些NA值的列来限制complete.cases
函数。但我发现它们根本没有被识别:
which(is.na(addition))
integer(0)
数据框"addition"长这样(在第1211行,NA是第4列):
row.names lemma pos derlemma derpos handannotated
11 akvizice N perform_akvizice V 1
1211 diagnóza N NA V 1
1221 dialýza N dialyzovat V 1
1241 díkuvzdání N perform_díkuvzdání V 1
我只用这个命令去除缺失值:
a <- addition[which(addition$derlemma != "NA"), ]
我是否错误地使用了complete.cases函数或带注释的"NA",或者可能在R Studio用户选项中搞错了什么?非常感谢您的任何支持。
使用RStudio版本0.98.1028,在Win 7 Professional 64x上工作。
待会再说: 由于下面的答案,我意识到字符变量中的“NA”不被解释为“无法获得”,而只是一个字符串。
我在R中创建了整个数据集,随后在RStudio中的数据编辑器中添加了没有引号的“NA”字符串到某些单元格中。因此我未能为R指定“NA”表示NA。
当我将数据框保存为.csv文件并使用read.table()重新加载时,我能够指定na.strings = "NA",然后complete.cases()就可以工作了。再次感谢所有顾问们!
NA
(见?NA
)在你的数据中实际上是一个字符字符串"NA"。如果你有NA
,那么na.omit(yourdataset)
就可以正常工作了。根据你在读入R中的数据时如何编码缺失值,read.table
函数中的na.strings
参数可能会有用。 - HenrikNA
应该可以正常工作。 - Heather TurnerNA
而不是"NA"
,那么addition[complete.cases(addition), ]
应该可以正常工作。您需要在上游修复一些问题。如果您使用read.table
加载数据,请确保使用默认值na.strings = "NA"
。或者您可能是通过编程创建数据,在这种情况下,请确保将那些不可用的值填充为NA
而不是"NA"
。 - flodel