2015-07-10 27 views
0

我有一個csv文件,我們稱它爲file1.csv。當我讀取一個新文件,比如說file2.csv時,我想先執行一次檢查,file1.csv中的所有列基本上是我對數據所期望的格式,它們都存在於file2.csv中。如何確保兩個csv文件在R中具有相同的列?

file2.csv可能有額外的列,但我想我的構建數據集,使得它基本上是下調存在於file1.csv列。

我該怎麼做?

編輯: @ user1436187,對不起,我沒有想到百分之%。我能夠使用它

if(length(which(names(df2)%in% names(df1))) == length(names(df1))) 
{ 
cat(paste("df2 contains all columns in df1")) 
}else 
{ 
cat(paste("df2 does not contain all columns in df1")) 
} 
+1

你可以把它讀給用的r read.csv'並使用'match'或'%in%'檢查列。問題是什麼! – user1436187

+1

你想檢查他們是否有同一班?一些例子會有幫助。 'dat2New < - DAT2 [名稱(DAT1)]' – akrun

+0

@akrun,感謝akrun,不,只是想檢查是否列都存在。並感謝一班,非常有幫助。 – PepperBoy

回答

1

如果「DAT1」出現在「DAT2」,你可以子集「DAT2」根據從「DAT1」列名的所有列

dat2New <- dat2[names(dat1)] 
1

如果您導入整個文件,這是一種方法。

file1 <- data.frame(a = runif(5), b = runif(5), c = runif(5)) 
file2 <- data.frame(d = runif(5), e = runif(5), a = runif(5), b = runif(5), c = runif(5)) 

file2 <- file2[, names(file2) %in% names(file1)] # file2 now has only columns present in file1 
# file2 <- file2[, names(file1)] # this would also work 

做的事情就只導入該文件的第一行獲得列名,使用%in%然後在read.table和親屬使用參數colClassesfile2僅導入特定的列做了類似的操作的另一種方式。

+0

'file2 [intersect(names(file2),names(file1))]'作爲變體。 – thelatemail

相關問題