【问题标题】:R - read.table(), subsetting and converting data during importR - read.table(),在导入期间子集和转换数据
【发布时间】:2017-06-13 06:05:11
【问题描述】:

我一直在尝试使用 read.table 读取包含数据的文本文件,但我必须同时解决 3 个问题。

  1. 我正在读取的数据混合了不同的列类。

日期;时间 ;数字1;数字2;数字3等。

当我导入日期和时间作为因素被导入。我试过了

    x <- read.table("file.txt", header = TRUE, sep = ";", nrows = 10, colClasses = c("Date", "Time", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", "numeric"))

但我收到此错误

    Error in methods::as(data[[i]], colClasses[i]) : no method or default for coercing “character” to “Time”

我不想阅读整个文件和子集并更改类。

  1. 这个文本文件有大约 200 万条记录,但我只想读取 2016 年和 2017 年的数据,再次不想子集。

  2. 我想把时间列转成时间类

有没有一种方法可以在导入过程中一次性完成所有这些操作?

【问题讨论】:

  • 文本文件的时间转换总是很棘手。我认为最好将其作为字符串导入,并弄清楚一旦它在内存中如何转换为时间,也许可以借助一些有用的日期处理包,例如lubridate。你能举出时间格式的例子吗?

标签: r import subset read.table


【解决方案1】:

我使用 fread 从 data.table 读取,但跳过了几行以仅获取 2017 年和 2016 年的数据。不幸的是,您可能需要以交互方式找到它,尤其是在数据未排序的情况下。

来自https://www.rdocumentation.org/packages/data.table/versions/1.10.4/topics/fread

dt=fread(输入, skip="string",stringsAsFactors=FALSE)

dt

我指的是fasttime包的日期

dt[,Datevar := as.POSIXct(Datevar)]

https://cran.r-project.org/web/packages/fasttime/fasttime.pdf

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 2017-08-12
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    相关资源
    最近更新 更多