[R] read.csv data frame thousands separator

Barry Rowlingson b.rowlingson at lancaster.ac.uk
Fri Apr 23 15:14:42 CEST 2010


On Fri, Apr 23, 2010 at 2:00 PM, arnaud Gaboury
<arnaud.gaboury at gmail.com> wrote:
> Dear group,

> "2,421.5000", "2,448.5000", "1,380.0000", "1,383.0000", "1,383.0000",
>
> "1,386.0000", "1,386.0000", "1,388.0000", "1,389.0000", "1,389.0000"
>

>
>>trades1=read.csv2("LSCTrades.csv",dec=".",sep=",",as.is=T,h=T,skip=1)
>
>
>
> The csv file has some numbers with thousands separator as a ".", so the
> class for my "Price" column is character, when I want it numeric.

 Looks like the thousands separator is a comma rather than a dot - the
dot is the decimal point separator. Or does your data have some commas
and some dots?

> I can't change the column class, even when playing with the read.csv or
> as.numeric commands and all their arguments.

 If it's consistent, ie all commas for thousands, then just use the
gsub function to replace commas with nothing and then as.numeric:

> as.numeric(gsub(",","","1,234,567.333"))
[1] 1234567

 so in your data frame:

 foo$N = as.numeric(gsub(",","",foo$N))

 there's probably a proper way of doing this involving
internationalisation settings and so forth, but this should be a quick
and dirty way of doing it.

Barry



More information about the R-help mailing list