阅读包含日期和数字的csv

时间:2010-08-24 08:10:30

标签: r read.csv

使用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将其显示为字符串,则数字数据也会转换为字符,因此无法用于统计过程。

3 个答案:

答案 0 :(得分:25)

使用colClasses参数:

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

NA表示“以默认方式进行”

导入后,您可以通过

factor转换为Date
data[[1]] <- as.Date(data[[1]])

答案 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默认值。

答案 2 :(得分:7)

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