在将大文本文件读入R中的变量之前对其进行子集化

时间:2014-06-08 08:45:44

标签: r dataframe read.table

我有一个大的txt文件(大约2 mil行)。第一列是格式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

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

1 个答案:

答案 0 :(得分:2)

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

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

您也可以使用subset()功能。

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

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

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