У меня большой CSV-файл (более 6 ГБ). Предварительный просмотр файла приведен ниже:Найти разницу в двух столбцах в CSV и сохранить в третьем столбце в кусках
ID,NUM,MMSRATE,SMSRATE,DATARATE
1,0100000109,623,233,331
2,0200000109,515,413,314
3,0600000109,611,266,662
4,0700000109,729,490,927
5,0800000109,843,637,736
6,0600000109,578,367,875
Я хочу, чтобы найти разницу MMSRATE И SMSRATE и сохранить его в новом PDRATE колонке в том же файле CSV. Предварительный просмотр приведен ниже:
ID,NUM,MMSRATE,SMSRATE,DATARATE,PDRATE
1,0100000109,623,233,333,390
2,0200000109,515,413,314,102
У меня около 1 миллиона строк. Я хочу прочитать строки в кусках (скажем, 20000), выполнить разностную операцию, затем записать ее в выходной файл CSV, затем прочитать следующие 20000 строк, выполнить операции над этим и записать их в выходной CSV-файл и так далее ,
Я написал код для чтения строк в кусках (из 2 для случая простоты), но я не могу выполнить разницу в двух столбцах внутри моего скрипта. Код приведен ниже:
chunk_size <- 2
con <- file("input.csv", open = "r")
data_frame <- read.csv(con,nrows = chunk_size,quote="",header = TRUE,)
header <- names(data_frame)
print(header)
print(data_frame)
if(nrow(data_frame) == chunk_size) {
repeat {
data_frame <- read.csv(con,nrows = chunk_size, header = FALSE, quote="")
names(data_frame)<-c(header)
print(header)
print(data_frame)
if(nrow(data_frame) < chunk_size) {
break
}
}
}
close(con)
Я довольно новичок в Rscript. Я запускаю R Studio IDE в Windows.
ПРИМЕЧАНИЕ: Ведущий нуль в столбце NUM следует сохранить в выходном файле CSV FILE. Обратите внимание, что это требование, что я работаю над CHUNKS строк из CSV, а не из CSV-файла в целом.
Почему вы не можете сразу прочитать строку 1M? Это не так уж и много. то это всего лишь 'df $ PTDR <- df $ MMSRATE - df $ SMSRATE' за один проход. – Tensibai
И если это всего лишь вопрос csv, вероятно, лучше всего подходит awk: 'awk -F", "-v OFS =", "'NR == 1 {print $ 0," PDRATE "} NR> 1 {end = $ 3 - $ 4; print $ 0, end} 'your_file.csv' – Tensibai
@Tensibai Это было требование, данное мне, т. е. выполнить разностную операцию coloumn на кусках строк из csv. Поэтому я не могу прочитать весь CSV-файл в целом. Можете ли вы предложить возможные решения. – Raymond