阅读包含日期和数字的csv

问题描述 投票:14回答:3

我用R导入csv文件时遇到问题:

要导入的示例行:

2010-07-27;91
2010-07-26;93
2010-07-23;88

我使用声明:

data <- read.csv2(file="...", sep=";", dec=".", header=FALSE)

当我尝试将这些数据与使用cbind的统计分析产生的其他数据进行汇总时,日期显示为整数,因为它是作为因子导入的。

如果我尝试使用as.character将其显示为字符串,则数字数据也会转换为字符,因此它们无法用于统计过程。

r read.csv
3个回答
25
投票

使用colClasses参数:

data <- read.csv2(file="...", sep=";", dec=".", header=FALSE,
     colClasses=c("Date",NA))

NA的意思是“默认行事”

导入后你可以将factor转换为Date

data[[1]] <- as.Date(data[[1]])

9
投票

也许您想将字符值转换为有意义的时间值。在这种情况下,POSIXt时间对象是一个不错的选择。

鉴于你的数据文件,我会做类似的事情。

data <- read.table(file="...", sep = ";", as.is = TRUE)
data[,1] <- strptime(data[,1], "%Y-%m-%d")

在帮助中查找strptime以获取更多详细信息。

注意:如果您要指定文件的所有属性,请使用read.table。所有其他read.xxx版本的唯一目的是简化表达式,因为默认设置已设置。这里使用了read.csv2,因为它默认为sep =';'。因此,请勿再次指定。不必指定这是命令存在的全部原因。就个人而言,我只使用read.table,因为我永远不会记住所有变种的名称/默认值。在你的情况下,它也是最简短的调用,因为它满足你的标题和dec默认值。


7
投票

as.is=TRUE添加到read.csv电话中。

© www.soinside.com 2019 - 2024. All rights reserved.