15

使用 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,则数值数据也会转换为字符,因此它们无法用于统计过程。

4

3 回答 3

29

使用colClasses论据:

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

NA表示“默认进行”

导入后,您可以转换factorDate

data[[1]] <- as.Date(data[[1]])
于 2010-08-24T09:34:33.650 回答
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 因为我永远记不起所有变体的名称/默认值。在您的情况下,它也是最简短的调用,因为它满足您的 header 和 dec 默认值。

于 2010-08-24T09:31:03.403 回答
7

添加as.is=TRUEread.csv通话中。

于 2010-08-24T08:20:41.160 回答