【问题标题】:How to make sure that two csv files have the same columns in R?如何确保两个 csv 文件在 R 中具有相同的列?
【发布时间】:2015-09-28 18:51:13
【问题描述】:

我有一个 csv 文件,我们称之为 file1.csv。当我读取一个新文件时,比如 file2.csv,我想首先检查 file1.csv 中的所有列,这基本上是我期望的数据格式,都存在于 file2.csv 中。

file2.csv 可能有额外的列,但我想构建我的数据集,使其基本上被修剪为 file1.csv 中存在的列。

我该怎么做?

编辑: @user1436187,对不起,我没有考虑 %in%。我能够使用它

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

【问题讨论】:

  • 您可以使用read.csv 将它们读到R,并使用match%in% 检查列。有什么问题!
  • 你要检查他们是否有相同的班级吗?一些例子会有所帮助。 dat2New <- dat2[names(dat1)]
  • @akrun,谢谢 akrun,不,只是想检查列是否存在。并感谢一个班轮,真的很有帮助。

标签: r dataframe


【解决方案1】:

如果“dat1”中的所有列都存在于“dat2”中,您可以根据“dat1”中的列名对“dat2”进行子集化

 dat2New <- dat2[names(dat1)]

【讨论】:

    【解决方案2】:

    如果您导入整个文件,这是一种方法。

    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% 执行类似操作,然后使用@987654325 中的参数colClasses 仅从file2 导入特定列@ 和亲属。

    【讨论】:

    • file2[intersect(names(file2),names(file1))] 作为变体。
    猜你喜欢
    • 2020-02-02
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    相关资源
    最近更新 更多