Re: read CSV
- To: mathgroup at smc.vnet.net
- Subject: [mg117790] Re: read CSV
- From: David Bailey <dave at removedbailey.co.uk>
- Date: Thu, 31 Mar 2011 04:03:57 -0500 (EST)
- References: <imus7l$i3t$1@smc.vnet.net>
On 30/03/2011 10:13, Alan wrote: > I've received some files formatted like below. > How can I read selected columns into a list? > I'm coming from a background where I'd read in each line, > discarding the first, then (in this case at least) > split on the comma, and coerce the type. So I'm happy > to do that if I can figure out how. (Naturally I could > preprocess the data into a form that say ReadList > likes better, but I'm looking for a pure Mathematica solution.) > > Thanks, > Alan Isaac > > "x","y","color","pen down?" > "0","0.26161459854014585","105","true" > "1","0.2665251497682828","105","true" > "2","0.29244385081680907","105","true" > "3","0.31995416628471895","105","true" > Here is the code you need. Since you are new to Mathematica, I'll explain a bit. 1) The Import command will read data from files using the filename suffix to decide the format it expects. Under Windows, a full pathname uses backslash characters, which need to be doubled in strings. 2) The data is read in as a 2D array, which can be thought of as a list of rows - you need to drop one row. 3) Assuming you want the string "true" to become a Mathematica boolean, you need the /. operator to perform the swap, as shown In[2]:= data = Import["c:\\ttt\\test.csv"] Out[2]= {{"x", "y", "color", "pen down?"}, {0, 0.261615, 105, "true"}, {1, 0.266525, 105, "true"}, {2, 0.292444, 105, "true"}, {3, 0.319954, 105, "true"}} In[5]:= data = Drop[data, 1] /. "true" -> True Out[5]= {{2, 0.292444, 105, True}, {3, 0.319954, 105, True}} David Bailey http://www.dbaileyconsultancy.co.uk