2015-05-06 18 views
0

8变量从.txt文件中提取正确地提取,下面的图像是原始数据的示例:如何检查数据(1.5米+行)从.txt文件

“LAT”, “LON”, “海拔”, “VAR”(长在第三行字符串), “年”, “第m个”, “天” 和 “数据”(值):

enter image description here

的.Rdata文件是使用1.5M +行创建的。下面的图片是结果的截图:

enter image description here

正如你所看到的,这些行似乎从.txt文件正确地提取和我已经手动检查的第1000行,但我不能这样做为文件的其余部分。

我的问题是:如何有效检查1.5 m行是否被正确提取?

+0

通过“提取”,你的意思是读入R使用'read.table'或'read.csv'?基于此,我可以给你一个你可以做的事情清单来验证你的数据。 – vagabond

回答

2

建立在@hedgedandlevered的答案和@vagabond的评论有很多事情,你可以做,可能系统,可以做分析之前的数据帧。我环顾了Stack Overflow,但找不到有关检查数据帧的问题,因此,值得这是我在加载文件时使用的过程。

我使用dplyr并将我的数据帧转换为dbf_tbl,以便输出合理。使用内置的数据集iris

install.packages("dplyr") 
require("dplyr") 
iris <- tbl_df(iris) 
iris 

这显示了文件和变量尚未打印(如果有的话)的负责人。这显示我是否有任何明显的问题,例如数据框未正确加载。我不打扰tail()但它不能伤害。

接下来我会检查我有正确数量的行(例)如预期。这是由dplyr打印或可以明确地检查:

nrow(iris) 

从这里它取决于个人的数据,我怎么继续,但它是健全检查由@hedgedandlevered的建议的情况。在你的情况我会确保纬度和经度坐标看理智的对待:

range(df$lat) 
range(df$long) 
summary(df$lat) 
summary(df$long) 

我会专门检查NAS和我甚至可能绘制在一些GIS软件的点的随机选择(或使用R!)以确保点看起来合理。

至于年,月,日我会做一个类似的总结/范围,以确保该值是明智的:

range(df$year) # only you can know what values are sensible 
range(df$month) # hopefully 1 - 12 only! 
range(df$day) # you get the idea... 

最后,确保$data看起来与summary()合理,甚至一箱线图:

boxplot(df$data) 

如果您有数据(即数据框中包含数字,而不是NAs或0),则可以假定数据已正确加载。我从来没有经历过R'造成东西'的情况,所以如果那里有东西,那是正确的。话虽如此,如果你有,你有太多的NA的情况下,你可以看看他们:

which(is.na(df$data)) 

,它将打印违规行号的索引/指数,为您的子集进一步探讨:

例如,如果你有行1,2 NAS上的变量,3,你可以看看这些只用行:

subset <- which(is.na(df$variable)) 
View(df[subset, ]) 

增加:从v0.99.x RStudio现在包括一个更复杂的数据视图,所以你可以打开你的约会View(df)(没有te capital'V'),并通过GUI更容易地探索,子集和过滤数据集。

检查和验证数据帧不是微不足道的,也不容易实现自动化,但有些工具可以帮助您提高效率。不过,他们并没有说清洁和检查数据需要比分析更多的时间,尽管如此!

0

表应具有哪些属性?应该“一年”只能在一定范围内?该指数应该一直在增加吗?每个经度测量值应该总是有恒定数量的测量值? 通过一些理智检查应该足够了;如果行了一会儿似乎是正确,和他们通过完整性检查,你可能去好了足够的确定性

例如:

unique(df[,'year'])

或者,你可以在表写入相同的格式,你读它,然后比较MD5s(谷歌MD5的帮助)

+0

谢谢你的回答。正是我在找的东西。 – angeladc17