2015-07-06 3 views
3

У меня есть большой файл csv, который мне нужно прочитать в R. Однако мне нужны только наблюдения с определенными значениями переменных (т. Е. С определенными датами). Есть ли способ сделать это с самого начала без необходимости читать весь файл, а затем подмножество?Чтение определенных строк из файла csv в R

+3

Вы можете попробовать с 'AWK/sed' для фильтрации строк, а затем' pipe' с read.table/read.csv или 'fread' – akrun

ответ

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) 
## 
Смежные вопросы