[ncl-talk] CSV file script
Kevin Hallock
hallock at ucar.edu
Mon Oct 23 17:45:51 MDT 2017
Hi Grace,
It looks like you’re trying to run the example script csv_2.ncl <http://www.ncl.ucar.edu/Applications/Scripts/csv_2.ncl> from the NCL website. Here’s a link <http://ncl.ucar.edu/Applications/Data/> to all of the sample data files we host; specifically, you may want to download example2.csv <http://ncl.ucar.edu/Applications/Data/asc/example2.csv> if you don’t already have it.
A quick issue I’d like to mention: this example seems to be using “group” as a variable name, but recent versions of NCL treat “group” as a keyword (meaning it cannot be used as a variable). I will try to update this example on our website in the near future. For now, please use “grp” instead of “group” as needed.
In this example, a CSV file “example2.csv” is read into NCL using asciiread(). Then, the function str_get_field() is used repeatedly to store the 1st, 5th, and 9th values of each row into the variables “name”, “grp”, and “size”, respectively. If you were to add a “print(name)” line after “name = str_get_field(lines,1,delim)”, you should see output like this:
> print(name)
Variable: name
Type: string
Total Size: 56 bytes
7 values
Number of Dimensions: 1
Dimensions and sizes: [7]
Coordinates:
(0) psmith01
(1) smehta
(2) mrsjohns
(3) psmith02
(4) scohen
(5) swright
(6) amarkov
Similarly, printing the other variables, you would see:
> print(grp)
Variable: grp
Type: integer
Total Size: 28 bytes
7 values
Number of Dimensions: 1
Dimensions and sizes: [7]
Coordinates:
(0) 1
(1) 1
(2) -1
(3) 0
(4) 2
(5) 1
(6) 3
and
> print(size)
Variable: size
Type: float
Total Size: 28 bytes
7 values
Number of Dimensions: 1
Dimensions and sizes: [7]
Coordinates:
(0) 1
(1) 2.1
(2) 2
(3) 10
(4) 1
(5) 1
(6) 1
NCL is able to concatenate strings with other data types, which is what we see in the "print("Name is'" + name + "', group is " + grp + ", size is " + size)” statement. What is actually happening under the hood is something like this:
/ psmith01 \ / 1 \ / 1 \
// smehta \\ // 1 \\ // 2.1 \\
/// mrsjohns \\\ ///-1 \\\ /// 2 \\\
"Name is - psmith02 - , group is 0 , size is 10 "
\\\ scohen /// \\\ 2 /// \\\ 1 ///
\\ swright // \\ 1 // \\ 1 //
\ amarkov / \ 3 / \ 1 /
or in NCL:
print("Name is'" + name + "', group is " + grp + ", size is " + size)
(0) Name is'psmith01', group is 1, size is 1
(1) Name is'smehta', group is 1, size is 2.1
(2) Name is'mrsjohns', group is -1, size is 2
(3) Name is'psmith02', group is 0, size is 10
(4) Name is'scohen', group is 2, size is 1
(5) Name is'swright', group is 1, size is 1
(6) Name is'amarkov', group is 3, size is 1
I hope this helps,
Kevin
> On Oct 23, 2017, at 4:14 PM, Grace Choi <gracesh27 at gmail.com> wrote:
>
> Hi everyone,
>
> So I am having a trouble understanding a part of a script for reading CSV file.
>
> I have been having a hard time getting this script to work, because I am not sure how to correctly write the highlighted part of the script.
>
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
>
> begin
> filename = "example2.csv"
>
> lines = asciiread(filename,-1,"string")
>
> delim = ","
>
> name = str_get_field(lines,1,delim)
> group = tointeger(str_get_field(lines,5,delim)
> size = tofloat(str_get_field(lines,9,delim)
>
> print("Name is'" + name + "', group is " + group + ", size is " + size)
> end
>
> I am not sure what print("Name is'" + name + "', group is " + group + ", size is " + size) indicates... What is the difference between "Name is"' + name. With an actual value put in, what should this script actually look like?
>
> Thanks so much for your help.
>
> Sincerely,
> Grace
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20171023/36eb970e/attachment.html>
More information about the ncl-talk
mailing list