read.csv并跳过R中的最后一列

时间:2017-11-15 17:09:15

标签: r csv read.csv

我已经阅读了几篇关于如何使用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列,没有列标签。我想跳过最后一栏。如何在不命名所有其他列的情况下执行此操作?非常感谢。

2 个答案:

答案 0 :(得分:0)

有点hacky但是,我通常会读取我想要的数据集的少量行,然后使用sapply(..., class)查找列类型并将最后一行设置为&#34; NULL&#34;。

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

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

答案 1 :(得分:0)

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

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]