从csv文件中读取特定行到R中

3

我有一个大的csv文件需要读入R中。然而,我只需要特定变量值的观测值(例如,特定日期)。在不需要读取整个文件并进行子集操作的情况下,您是否可以从一开始就实现这一点?


3
您可以尝试使用awk/sed来过滤行,然后与read.table/read.csvfread一起使用管道进行处理。 - akrun
1个回答

2

假设你的数据集中日期在第一列(并且你在类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)
##

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接