从.txt文件中提取了8个变量,下图是原始数据的示例:
" lat"," lon"," elev"," var"(第三行中的长字符串),&# 34;年"," mth"," day"和"数据" (值):
使用1.5M +行创建.Rdata文件。下图是结果的屏幕截图:
正如您所看到的,这些行似乎是从.txt文件中正确提取的,我手动检查了前1000行,但我不能对文件的其余部分执行此操作。
我的问题是:如何有效地检查1.5 m行是否被正确提取?
答案 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...
最后,确保$data
与summary()
看起来合理,甚至可能是一个箱线图:
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帮助)