【问题标题】:read.csv and skip last column in R [duplicate]read.csv 并跳过 R [重复] 中的最后一列
【发布时间】:2017-11-15 17:09:15
【问题描述】:

我已经阅读了其他几篇关于如何使用 read.csv 导入 csv 文件但跳过特定列的文章。但是,我发现的所有示例的列都很少,因此很容易执行以下操作:

 columnHeaders <- c("column1", "column2", "column_to_skip")
 columnClasses <- c("numeric", "numeric", "NULL")
 data <- read.csv(fileCSV, header = FALSE, sep = ",", col.names = 
 columnHeaders, colClasses = columnClasses)

我有 201 列,没有列标签。我想跳过最后一栏。如果不命名所有其他要保留的列,怎么可能做到这一点?非常感谢。

【问题讨论】:

  • 怎么样? columnClasses &lt;- c(rep("numeric",200), "NULL")
  • 或者只是阅读所有列然后删除您不喜欢的列? data &lt;- read.csv("../CAASPP_clustering/ca2016_1_csv_v3.zip") data_trimmed &lt;- data[,1:(ncol(data)-1)]
  • 列名可以使用:columnHeaders&lt;- c(sprintf("column%d", 1:200))

标签: r csv read.csv


【解决方案1】:

有点老套,但是,我通常会读入少量我想要的数据集行,然后使用sapply(..., class) 查找列类型并将最后一个设置为“NULL”。

data<-read.table("test.csv", sep=',', nrows = 100)
colClasses<-sapply(data, class)
colClasses[length(colClasses)]<-"NULL"

然后您可以将此colClasses 传递给您的read.csv() 函数

【讨论】:

    【解决方案2】:

    您可以只读取所有数据,然后消除违规者。

    data <- read.csv("../CAASPP_clustering/ca2016_1_csv_v3.zip")
    data_trimmed <- data[,1:(ncol(data)-1)]
    

    如果您更喜欢以编程方式筛选课程,那么您可以执行以下操作:

    class_list <- lapply(data, class)
    chosen_cols <- names(class_list[class_list != "NULL"])
    data_trimmed <- data[chosen_cols]
    

    【讨论】:

      猜你喜欢
      • 2013-04-04
      • 2016-12-30
      • 2020-01-13
      • 2013-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-04
      相关资源
      最近更新 更多