在将大的txt文件读入R中的变量之前对其进行子集化[重复]

Posted

技术标签:

【中文标题】在将大的txt文件读入R中的变量之前对其进行子集化[重复]【英文标题】:subsetting a large txt file before reading it into the variable in R [duplicate] 【发布时间】:2014-07-29 01:24:37 【问题描述】:

我有一个大的 txt 文件(大约 2 百万行)。第一列是格式为 01/01/2006 的日期。 值用 ; 分隔

data <- read.table("largeFile.txt", sep=";")

dataToUse <- data[data$Date >= 01/02/2007 && data$Date <= 02/02/2007,]

示例行:

16/12/2006;17:36:00;5.224;0.478;232.990;22.400;0.000;1.000;16.000

上面的代码也不起作用,但是有没有办法先进行子集化,然后将数据加载到数据变量中?由于文件很大,加载需要一些时间?

【问题讨论】:

首先,学习help("&amp;&amp;"),了解为什么应该使用&amp;。然后查看包 data.table 中的fread 函数以加快导入速度。 另外,看看***.com/questions/1727772/… 【参考方案1】:

要使子集起作用,您需要引号和少一个 & 号。

dataToUse <- data[data$Date >= "01/02/2007" & data$Date <= "02/02/2007", ]

您也可以使用subset() 函数。

subset(data, Date >= "01/02/2007" & Date <= "02/02/2007")

接下来,如果日期列应该是一个日期类变量,您可以使用read.table() 中的参数colClasses 设置它的类。如果您愿意,可以通过这种方式设置所有列类,或者只使用一种方式。在将 colClasses 用于日期类变量之前,请确保您的日期格式正确。

最后,为了在将数据读入 R 之前对其进行子集化,我建议在终端或 shell 中使用 shell/unix 命令。 grepawksed 等函数可以在将数据发送到 R 之前轻松快速地减少数据。在 Windows 上,我建议您下载 Cygwin(它免费且快速),显然只是终端在基于 linux 的机器中。

【讨论】:

+1 建议使用 grep。

以上是关于在将大的txt文件读入R中的变量之前对其进行子集化[重复]的主要内容,如果未能解决你的问题,请参考以下文章

R通过字符变量的值对data.table进行子集

如何按行条件将巨大的 csv 文件读入 R?

在将 SCNPhysicsVehicleWheels 导入 Xcode 之前对其进行缩放

如何在将图像提供给 CoreML 模型之前对其进行预处理?

如何在将密码保存到用户模型 Django 之前对其进行加密?

是否有更好的语法来对 R 中的数据框进行子集化?