2015-07-10 29 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

相关问题