如何检查从.txt文件

时间:2015-05-06 12:29:03

标签: r dataframe

从.txt文件中提取了8个变量,下图是原始数据的示例:

" lat"," lon"," elev"," var"(第三行中的长字符串),&# 34;年"," mth"," day"和"数据" (值):

enter image description here

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

enter image description here

正如您所看到的,这些行似乎是从.txt文件中正确提取的,我手动检查了前1000行,但我不能对文件的其余部分执行此操作。

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

2 个答案:

答案 0 :(得分: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...

最后,确保$datasummary()看起来合理,甚至可能是一个箱线图:

boxplot(df$data)

如果您有数据(即包含数字的数据框,而不是NAs或0),您可以假设数据已正确加载。我从未经历过R'制造东西'的情况,所以如果那里有东西,那是正确的。话虽如此,如果您遇到过多的NA,您可以通过以下方式查找它们:

which(is.na(df$data))

这将打印违规行号的索引/索引,供您通过子集化进一步探索:

例如,如果在第1,2和3行中有一个带有NAs的变量,则可以使用以下命令查看这些行:

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

另外:来自v0.99.x的RStudio现在包含更复杂的数据视图,因此您可以使用View(df)打开日期(注意大写'V')并更轻松地探索,子集和过滤数据集通过GUI。

检查和验证数据框并非易事,不能轻易实现自动化,但有一些工具可以帮助您提高效率。他们并没有说清洁和检查数据比没有任何分析需要更多时间!

答案 1 :(得分:0)

桌子应该有哪些属性?应该&#34;年&#34;只在一定范围内?指数应该总是在增加吗?每个经度测量值是否应始终存在恒定的测量值? 进行一些健全检查就足够了;如果这些行似乎是正确的一段时间,并且他们通过了理智检查,那么你可能很有把握足够的确定性

示例:

unique(df[,'year'])

或者,您可以将表格编写为您从中读取的格式,然后比较MD5(谷歌获取MD5帮助)