在read.csv文件中指定colclass
我试图在R中的在read.csv文件中指定colclass,r,csv,read.csv,R,Csv,Read.csv,我试图在R中的read.csv函数中指定colClasses选项。在我的数据中,第一列“time”基本上是一个字符向量,而其余列是数字 data <- read.csv("test.csv", comment.char="" , colClasses=c(time="character", "numeric"), strip.white=FALSE) data 0L]]colClasses向量的长度必须等于导入的列数
read.csv
函数中指定colClasses
选项。在我的数据中,第一列“time”基本上是一个字符向量,而其余列是数字
data <- read.csv("test.csv", comment.char="" ,
colClasses=c(time="character", "numeric"),
strip.white=FALSE)
data 0L]]colClasses向量的长度必须等于导入的列数。假设数据集的其余列为5:
colClasses=c("character",rep("numeric",5))
假设您的“时间”列中至少有一个观察值是非数字字符,而您的所有其他列都只有数字,则“read.csv”的默认值将是将“时间”作为“因子”读入,其余所有列都作为“数字”读入。因此,设置“stringsAsFactors=F”将产生与手动设置“colClasses”相同的结果,即
data <- read.csv('test.csv', stringsAsFactors=F)
data您只能为一列指定colClasse
因此,在您的示例中,您应该使用:
data <- read.csv('test.csv', colClasses=c("time"="character"))
data如果您希望引用标题中的名称而不是列号,可以使用如下内容:
fname <- "test.csv"
headset <- read.csv(fname, header = TRUE, nrows = 10)
classes <- sapply(headset, class)
classes[names(classes) %in% c("time")] <- "character"
dataset <- read.csv(fname, header = TRUE, colClasses = classes)
fname对于没有标题的多个datetime列和许多列,假设我的datetime字段位于第36列和第38列,我希望它们作为字符字段读入:
data<-read.csv("test.csv", head=FALSE, colClasses=c("V36"="character","V38"="character"))
data我知道OP询问了关于utils::read.csv
函数的问题,但是让我为那些来这里搜索如何使用tidyverse上的readr::read\u csv
来实现这一点的人提供一个答案
read_csv ("test.csv", col_names=FALSE, col_types = cols (.default = "c", time = "i"))
这应该将所有列的默认类型设置为字符,而时间将被解析为整数。如果我们将@Hendy和@Oddysseus Ithaca的贡献结合起来,我们会得到更干净、更通用(即适应性更强的?)的代码块
data <- read.csv("test.csv", head = F, colClasses = c(V36 = "character", V38 = "character"))
数据您可能可以使用以下方法读取csv的第一行并确定有多少列。扫描(csv,sep=',,what=“character”,nlines=1)这实际上是一个不正确的答案,让我有一段时间不感兴趣。正确答案如下。不想成为一个混蛋,只是想确保这不会发生在其他任何人身上。@Rob在我的情况下,这仍然是正确的答案,当你还需要指定其他变量的类时,它们不会被read.table
自动识别。这并不重要,但是我发现这在不引用列名的情况下是有效的。当尝试将引用的整数作为字符读取时,这种方法实际上非常有用。谢谢
data <- read.csv("test.csv", head = F, colClasses = c(V36 = "character", V38 = "character"))