我试图在R colClasses中的read.csv函数中指定选项.在我的数据中,第一列"时间"基本上是字符向量,而其余列是数字.
data <- read.csv("test.csv", comment.char="" ,
colClasses=c(time="character", "numeric"),
strip.white=FALSE)
Run Code Online (Sandbox Code Playgroud)
在上面的命令中,我希望R在"时间"列中读取"字符",其余为数字.虽然命令完成后"data"变量确实具有正确的结果,但R返回了以下警告.我想知道如何解决这些警告?
Warning messages:
1: In read.table(file = file, header = header, sep = sep, quote = quote, :
not all columns named in 'colClasses' exist
2: In tmp[i[i > 0L]] <- colClasses :
number of items to replace is not a multiple of replacement length
Run Code Online (Sandbox Code Playgroud)
德里克
小智 156
您只能为一列指定colClasse.
所以在你的例子中你应该使用:
data <- read.csv('test.csv', colClasses=c("time"="character"))
Run Code Online (Sandbox Code Playgroud)
Geo*_*tas 77
colClasses向量的长度必须等于导入列的数量.假设其余数据集列为5:
colClasses=c("character",rep("numeric",5))
Run Code Online (Sandbox Code Playgroud)
wkm*_*or1 13
假设你的'时间'列至少有一个带有非数字字符的观察,而你的所有其他列只有数字,那么'read.csv的默认值将是'时间'作为'因子'读取,其余的全部是列为"数字".因此,设置'stringsAsFactors = F'将与手动设置'colClasses'具有相同的结果,即
data <- read.csv('test.csv', stringsAsFactors=F)
Run Code Online (Sandbox Code Playgroud)
sce*_*oni 10
如果要引用标题中的名称而不是列号,可以使用以下内容:
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)
Run Code Online (Sandbox Code Playgroud)
我知道 OP 询问了该utils::read.csv功能,但让我为那些来到这里搜索如何使用readr::read_csvtidyverse 的人提供答案。
read_csv ("test.csv", col_names=FALSE, col_types = cols (.default = "c", time = "i"))
Run Code Online (Sandbox Code Playgroud)
这应该将所有列的默认类型设置为character,而time将被解析为整数。
小智 5
对于没有标题的多个日期时间列和很多列,假设我的日期时间字段位于第 36 和 38 列中,我希望它们作为字符字段读入:
data<-read.csv("test.csv", head=FALSE, colClasses=c("V36"="character","V38"="character"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
156608 次 |
| 最近记录: |