我有一个大的csv文件需要读入R中。然而,我只需要特定变量值的观测值(例如,特定日期)。在不需要读取整个文件并进行子集操作的情况下,您是否可以从一开始就实现这一点?
假设你的数据集中日期在第一列(并且你在类Unix机器上),你可以这样做:
dates <- paste0(c("2015-06-01", "2015-06-16"), collapse = "|")
expr <- paste0("grep -E '(", dates, "),.+' tmpcsv.csv", collapse = "")
##
R> data.table::fread(expr)
V1 V2
1: 2015-06-16 -1.6866933
2: 2015-06-16 1.3686023
3: 2015-06-01 -0.2257710
4: 2015-06-16 -1.0185754
5: 2015-06-01 0.3035286
6: 2015-06-01 2.0500847
7: 2015-06-01 -0.4910312
set.seed(123)
##
df <- data.frame(
Date = Sys.Date() + floor(50*round(runif(50, -1, 1), 1)),
Value = rnorm(50)
)
write.csv(df, file = "tmpcsv.csv", row.names = FALSE)
##
awk/sed
来过滤行,然后与read.table/read.csv
或fread
一起使用管道进行处理。 - akrun