我在一个研究联盟工作,该联盟拥有一个基于网络的数据管理系统,该系统由另一个机构管理。我可以从该系统下载基础数据作为 CSV 文件的集合。使用 R
和 knitr
,我在这些文件之上构建了一个中等复杂的报告系统。但每隔一段时间,其他机构就会更改数据提取的格式并破坏我的报告(或者更糟糕的是,以一种我数周都没有注意到的微妙但邪恶的方式进行更改)。
当这些事情发生时,他们可能永远不会通知我,所以我想我应该进行更多测试。我想首先测试这些 CSV 文件是否每次都具有相同的结构(但随着我们收集更多数据,允许不同的行数)。最好的方法是什么? R
是我的首选工具,但我有兴趣了解其他免费的 Windows 工具。
最佳答案
如果您的文件只是 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))
这会比较数据框的属性以及列的类。如果您需要更详细地了解列格式,您可以轻松扩展它。这假设报告没有更改行数(或列数),但如果是这种情况,也应该很容易修改。
关于r - 如何检查新数据提取是否具有相同的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21321707/