r - 如何检查新数据提取是否具有相同的结构?

标签 r testing csv etl

我在一个研究联盟工作,该联盟拥有一个基于网络的数据管理系统,该系统由另一个机构管理。我可以从该系统下载基础数据作为 CSV 文件的集合。使用 Rknitr,我在这些文件之上构建了一个中等复杂的报告系统。但每隔一段时间,其他机构就会更改数据提取的格式并破坏我的报告(或者更糟糕的是,以一种我数周都没有注意到的微妙但邪恶的方式进行更改)。

当这些事情发生时,他们可能永远不会通知我,所以我想我应该进行更多测试。我想首先测试这些 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/

相关文章:

r - 使用 read.csv.ffdf() 会引发错误

python - TypeError : argument 1 must be convertible to a buffer, 不是 BeautifulSoup

json - 将数据 (.csv/json) 与 topojson 相结合

testing - TDD 单元测试子方法

testing - Protractor - 在 iframe 中查找元素

Java,用转换为字符串的整数填充CSV文件

r - 根据 R 中每个组的最后一个非 NA 值填写 NA

r - 使用 `$` 运算符的准引用

r - "tidyr like"从不同的列中填充 na

testing - 创建回归测试