Data update
This commit is contained in:
parent
5150844a7d
commit
4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions
|
|
@ -1,91 +0,0 @@
|
|||
--- Read CSV file and add columns headed with 'SUM'
|
||||
--- with trace
|
||||
-- trace(0)
|
||||
|
||||
include get.e
|
||||
include std/text.e
|
||||
|
||||
function split(sequence s, integer c)
|
||||
sequence removables = " \t\n\r\x05\u0234\" "
|
||||
sequence out
|
||||
integer first, delim
|
||||
out = {}
|
||||
first = 1
|
||||
while first <= length(s) do
|
||||
delim = find_from(c,s,first)
|
||||
if delim = 0 then
|
||||
delim = length(s)+1
|
||||
end if
|
||||
out = append(out,trim(s[first..delim-1],removables))
|
||||
first = delim + 1
|
||||
end while
|
||||
return out
|
||||
end function
|
||||
|
||||
procedure main()
|
||||
integer fn -- the file number
|
||||
integer fn2 -- the output file number
|
||||
integer e -- the number of lines read
|
||||
object line -- the next line from the file
|
||||
sequence data = {} -- parsed csv data row
|
||||
sequence headerNames = {} -- array saving column names
|
||||
atom sum = 0.0 -- sum for each row
|
||||
sequence var -- holds numerical data read
|
||||
|
||||
-- First we try to open the file called "data.csv".
|
||||
fn = open("data.csv", "r")
|
||||
if fn = -1 then
|
||||
puts(1, "Can't open data.csv\n")
|
||||
-- abort();
|
||||
end if
|
||||
|
||||
-- Then we create an output file for processed data.
|
||||
fn2 = open("newdata.csv", "w")
|
||||
if fn2 = -1 then
|
||||
puts(1, "Can't create newdata.csv\n")
|
||||
end if
|
||||
|
||||
-- By successfully opening the file we have established that
|
||||
-- the file exists, and open() gives us a file number (or "handle")
|
||||
-- that we can use to perform operations on the file.
|
||||
|
||||
e = 1
|
||||
while 1 do
|
||||
line = gets(fn)
|
||||
if atom(line) then
|
||||
exit
|
||||
end if
|
||||
data = split(line, ',')
|
||||
|
||||
if (e=1) then
|
||||
-- Save the header labels and
|
||||
-- write them to output file.
|
||||
headerNames = data
|
||||
for i=1 to length(headerNames) do
|
||||
printf(fn2, "%s,", {headerNames[i]})
|
||||
end for
|
||||
printf(fn2, "SUM\n")
|
||||
end if
|
||||
|
||||
-- Run a sum for the numerical data.
|
||||
if (e >= 2) then
|
||||
for i=1 to length(data) do
|
||||
printf(fn2, "%s,", {data[i]})
|
||||
var = value(data[i])
|
||||
if var[1] = 0 then
|
||||
-- data read is numerical
|
||||
-- add to sum
|
||||
sum = sum + var[2]
|
||||
end if
|
||||
end for
|
||||
printf(fn2, "%g\n", {sum})
|
||||
sum = 0.0
|
||||
end if
|
||||
e = e + 1
|
||||
end while
|
||||
|
||||
close(fn)
|
||||
close(fn2)
|
||||
end procedure
|
||||
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue