On May 5, 2010, at 11:31 PM, Wang, Kevin (SYD) wrote:

Hi Phil and all those who replied,

Thanks heap! Yes it worked to a certain extent. However, if I have the
following case:
x <- c("$135,359.00", "$135359.00", "$1,135,359.00")
y <- sub('\\$','',as.character(x))
cost <- as.numeric(sub('\\,','',as.character(y)))

Try gsub, it seems to be more "greedy" :

cost <- as.numeric(gsub('\\,','',as.character(y)))

--
David
Warning message:
NAs introduced by coercion
cost
[1] 135359 135359     NA

Then the third value bcomes NA -- though I suspect it's probably has
something to do with regular expression (which I'm not sure how to fix)
than R?

Thanks again for the help!

Cheers
Kev

-----Original Message-----
From: Phil Spector [mailto:[email protected]]
Sent: Wednesday, 5 May 2010 6:14 PM
To: Wang, Kevin (SYD)
Cc: [email protected]
Subject: Re: [R] Converting dollar value (factors) to numeric

Kev-
  The most reliable way to do the conversion is as follows:

x = factor(c('$112.11','$119.15','$121.32'))
as.numeric(sub('\\$','',as.character(x)))
[1] 112.11 119.15 121.32

This way negative quantities and numbers without dollar signs are
handled correctly.  There's certainly no need to create a new input
file.

It may be easier to understand as

as.numeric(sub('$','',as.character(x),fixed=TRUE))

which gives the same result.
                                        - Phil Spector
                                         Statistical Computing Facility
                                         Department of Statistics
                                         UC Berkeley
                                         [email protected]


On Wed, 5 May 2010, Wang, Kevin (SYD) wrote:

Hi,

I'm trying to read in a bunch of CSV files into R where many columns
are coded like $111.11.  When reading them in they are treated as
factors.

I'm wondering if there is an easy way to convert them into numeric in
R (as I don't want to modify the source data)?  I've done some
searches and can't seem to find an easy way to do this.

I apologise if this is a trivial question, I haven't been using R for
a while.

Many thanks in advance!

Cheers

Kev

Kevin Wang
Senior Advisor, Health and Human Services Practice Government
Advisory Services

KPMG
10 Shelley Street
Sydney  NSW  2000  Australia

Tel     +61 2 9335 8282
Fax     +61 2 9335 7001

[email protected]

Protect the environment: think before you print




        [[alternative HTML version deleted]]

______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

David Winsemius, MD
West Hartford, CT

______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to