我为一个研究联盟工作,该联盟拥有由其他机构管理的基于网络的数据管理系统。我可以从该系统下载基础数据作为CSV文件的集合。使用R
和knitr
,我在这些文件之上构建了一个中等复杂的报告系统。但是每隔一段时间,另一个机构就会改变数据提取的格式并炸毁我的报告(或者更糟糕的是,用一种微妙而邪恶的方式改变它,我几周都没注意到。)
当这些事情发生时,他们可能永远不会通知我,所以我想我应该测试更多。我想首先测试那些CSV文件每次都具有相同的结构(但是当我们收集更多数据时允许不同数量的行)。最好的方法是什么? R
是我的首选工具,但我有兴趣听到其他人(在Windows上免费)。谢谢!
答案 0 :(得分:2)
如果你的文件只是CSV,这里有一个例子(假设你保留一个参考文件):
reference.file <- read.csv("ref.csv")
new.file <- read.csv("new.file")
struct.extract <- function(df) {
list(
vapply(df, class, character(1L)),
attributes(df)[names(attributes(df)) != "row.names"]
)
}
identical(struct.extract(reference.file), struct.extract(new.file))
这会比较数据框的属性以及列的类。如果您需要更详细地了解列格式,可以轻松扩展它。这假设报告没有更改行(或列)的数量,但如果是这种情况,那么也应该很容易修改。