【问题标题】:How can I check that new data extracts have the same structure?如何检查新数据提取是否具有相同的结构?
【发布时间】:2014-02-14 19:11:54
【问题描述】:

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

当这些事情发生时,他们可能永远不会通知我,所以我想我应该进行更多测试。我想首先测试这些 CSV 文件是否每次都具有相同的结构(但在我们收集更多数据时允许不同数量的行)。最好的方法是什么? R 是我的首选工具,但我有兴趣了解其他免费且在 Windows 上的工具。

【问题讨论】:

    标签: r testing csv etl


    【解决方案1】:

    如果您的文件只是 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))
    

    这会比较数据框的属性以及列的类。如果您需要更详细地了解列格式,您可以轻松扩展它。这假设报告没有更改行数(或列数),但如果是这种情况,也应该很容易修改。

    【讨论】:

      猜你喜欢
      • 2014-05-09
      • 2023-03-16
      • 1970-01-01
      • 2018-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-11
      • 1970-01-01
      相关资源
      最近更新 更多