2014-01-23 53 views
1

我爲一家研究機構工作,提供由另一家機構管理的基於網絡的數據管理系統。我可以從該系統下載基礎數據作爲CSV文件的集合。使用Rknitr,我已經在這些文件之上構建了一個適度複雜的報告系統。但是每隔一段時間,另一個機構就會改變數據提取的格式,並炸燬我的報告(或者更糟糕的是,它會以一種我幾周沒有注意到的微妙而邪惡的方式來改變它)。如何檢查新數據摘錄是否具有相同的結構?

當這些事情發生時,他們可能永遠不會通知我,所以我想我應該進行更多的測試。我想首先測試一下那些CSV文件每次都有相同的結構(但是在我們收集更多數據時允許不同數量的行)。什麼是最好的方式來做到這一點? R是我的首選工具,但我有興趣聽到其他人(這是免費的,在Windows上)。謝謝!

回答

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)) 

與此相比列的數據幀的屬性,以及類。如果你需要更詳細的列格式,你可以很容易地擴展。這假定報告不會更改行數(或列數),但如果是這種情況,那麼也應該很容易修改。

+0

謝謝 - 這看起來不錯。並感謝提醒我澄清,行數每天都在變化。 –

相關問題