Rebol3 Code Examplex
CSV data manipulation
Read, transform, and write CSV records.
Rebol [
title: "Rosetta code: CSV data manipulation"
file: %CSV_data_manipulation.r3
url: https://rosettacode.org/wiki/CSV_data_manipulation
]
write %test.csv {C1,C2,C3,C4,C5
1,5,9,13,17
2,6,10,14,18
3,7,11,15,19
4,8,12,16,20} ;; create a sample CSV file on disk
probe-csv: func [data][
foreach row data [probe row] ;; helper: print each parsed CSV row using probe
]
import csv ;; enable CSV codec for load/save of CSV files
data: load %test.csv ;; load CSV into a block of rows (row 1 is header)
print "^/Original:" probe-csv data ;; show original data
;; Add SUM column:
append data/1 "SUM" ;; extend header with a new column "SUM"
foreach row next data [ ;; iterate over data rows (skip header)
sum: 0
forall row [ ;; walk each cell in the row in place
change row to integer! row/1 ;; convert current cell to integer (mutates row)
sum: sum + row/1 ;; accumulate the running total
]
append row sum ;; append the computed sum at the end of the row
]
print "^/Modified:" probe-csv data ;; show data after adding the SUM column
save %new.csv data ;; save the modified data to a new CSV file
print "^/Reloaded:" probe-csv load %new.csv ;; reload and display to verify persistence