【问题标题】:Read csv with dates and numbers读取带有日期和数字的 csv
【发布时间】:2011-04-03 01:05:25
【问题描述】:

我在使用 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


    【解决方案1】:

    也许您想将字符值转换为有意义的时间值。在这种情况下,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 默认值。

    【讨论】:

    • 当我运行您的第二行时,我收到一条错误消息,例如“提供 9 个变量来替换 1 个变量”。但是,当我将 strptime 包装在 as.POSIXct(...) 中时,即执行 as.POSIXct(strptime(data[,1], "%Y-%m-%d") 时,它似乎可以工作。
    • 如果 data[,1] 是格式为 c("2010-07-23",...) 的字符串向量,我写的就可以了。无论如何,“似乎工作”是什么意思?听起来您只是在转换默认的 POSIXlt 结果,并且使用 POSIXlt 值还有一些此处未提及的其他功能。没关系,只是结果不同而已。这并不意味着现有的东西不起作用。 POSIXlt 和 POSIXct 属于 POSIXt 类(这是我提到的)。
    • 这正是 read.csv(...colClasses...) 的用途!见马立克的回答。使用 colClasses 在读取时进行转换比这个答案更好,因为它不会浪费大量临时内存。 (之后只需 gc(reset=TRUE)。)而且,它更清晰。
    • 我不知道“很多”临时内存,我不时使用 colClasses。但有时你想使用多个类。此外,如果您只想从一堆中更改几列并且它们位于奇怪的位置,则需要您为需要更多代码或计算一大堆条目的列类创建向量以确保您点击正确一。而且,read.table() 当然有 colClasses 参数。
    • strptime() 的额外好处是能够读取小时和分钟,如在strptime(df[[1]], "%Y-%m-%d %H:%M") 中,如果需要的话。
    【解决方案2】:

    使用colClasses 参数:

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

    NA 表示“默认进行”

    导入后,您可以通过

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

    【讨论】:

      【解决方案3】:

      as.is=TRUE 添加到read.csv 调用中。

      【讨论】:

        猜你喜欢
        • 2012-03-11
        • 1970-01-01
        • 2020-08-12
        • 2020-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-03
        • 1970-01-01
        相关资源
        最近更新 更多