为什么R将一个单元中的NAs变成一排NAs?

当我将excel中创build的csv文件导入到R中时遇到问题。包含缺失数据但包含时间戳的行被表示为一行NAs。

我正在使用R处理包含由传感器收集的stream温度和深度测量值的大型数据集。 我们每15分钟收集一次这些数据大约三年。 数据集中有一些小洞,由于其他原因,我需要用时间戳和NAs来表示缺失的数据。 这些洞在R给我的问题

我已经整理了excel中的所有数据,包含4列的大文件:date,时间,深度和温度。 然后,我为所有缺失的采样周期创build了一个时间戳,并放置了NA:

date, time, temp, depth 10/10/10, 0:00:00, 20, 3 10/10/10, 0:15:00, 20, 3 10/10/10, 0:30:00, NA, NA 

我把它保存在excel中作为csv。 然后,我使用read.csv()将文件导入到R中。 一切都看起来很好,当我打印数据框; 但是,在某些情况下,R会返回缺less温度或深度数据的行的整行NA:

 > str(blah) 'data.frame': 384 obs. of 4 variables: $ date : Factor w/ 4 levels "10/10/10","10/11/10",..: 4 4 4 4 4 4 4 4 4 4 ... $ time : Factor w/ 96 levels "0:00:00","0:15:00",..: 1 2 3 4 5 6 7 8 49 50 ... $ tempC : int 15 15 15 15 15 15 15 15 15 15 ... $ depthm: int 3 3 3 3 3 3 3 3 3 3 ... > blah[blah$tempC == "NA",] date time tempC depthm NA <NA> <NA> NA NA NA.1 <NA> <NA> NA NA 

这可以通过在Excel中生成包含生成的时间和date序列的testing文件轻松地重新创build,其中一些使用制作的临时和深度数据以及一些使用NAs的行。 有人知道这里发生了什么? 谢谢。

没有“==”的NA。 使用is.na()来代替:

 blah[is.na( blah$tempC ), ] 

你拿到所有的NA的原因是什么似乎是一个奇怪的devise决定,但我已经抱怨,并被告知,这是石器。 “[”函数返回具有NA索引的任何行的NA行。 使用大型数据框时,如果只有一小部分行会生成一个NA索引,那么真的很痛苦(… .1%的NA在400万以上,会导致你的控制台被垃圾页占满)。 你可能需要在你的“[”-indexing“或者在交互式会话中使用subset使用...&!is.na(.)