[R] thousand separator (was RE: weight)

Marc Schwartz marc_schwartz at comcast.net
Mon Apr 30 19:01:49 CEST 2007


One possibility would be to use something like the following
post-import:

> WTPP
[1] 1,106.8250 1,336.5138

> str(WTPP)
 Factor w/ 2 levels "1,106.8250","1,336.5138": 1 2

> as.numeric(gsub(",", "", WTPP))
[1] 1106.825 1336.514


Essentially strip the ',' characters from the factors and then coerce
the resultant character vector to numeric. 

HTH,

Marc Schwartz


On Mon, 2007-04-30 at 12:26 -0400, Liaw, Andy wrote:
> I've run into this occasionally.  My current solution is simply to read
> it into Excel, re-format the offending column(s) by unchecking the
> "thousand separator" box, and write it back out.  Not exactly ideal to
> say the least.  If anyone can provide a better solution in R, I'm all
> ears...
> 
> Andy 
> 
> From: Natalie O'Toole
> > 
> > Hi,
> > 
> > These are the variables in my file. I think the variable i'm having 
> > problems with is WTPP which is of the Factor type. Does 
> > anyone know how to 
> > fix this, please?
> > 
> > Thanks,
> > 
> > Nat
> > 
> > data.frame':   290 obs. of  5 variables:
> >  $ PROV  : num  48 48 48 48 48 48 48 48 48 48 ...
> >  $ REGION: num  4 4 4 4 4 4 4 4 4 4 ...
> >  $ GRADE : num  7 7 7 7 7 7 7 7 7 7 ...
> >  $ Y_Q10A: num  1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 1.1 ...
> >  $ WTPP  : Factor w/ 1884 levels 
> > "1,106.8250","1,336.5138",..: 1544 67 
> > 1568 40 221 1702 1702 1434 310 310 ...
> > 
> > 
> > __________________
> > 
> > 
> > 
> > --- Douglas Bates <bates at stat.wisc.edu> wrote:
> > 
> > > On 4/28/07, John Kane <jrkrideau at yahoo.ca> wrote:
> > > > IIRC you have a yes/no smoking variable scored 1/2
> > > ?
> > > >
> > > > It is possibly being read in as a factor not as an
> > > > integer.
> > > >
> > > > try
> > > >  class(df$smoking.variable)
> > > > to see .
> > > 
> > > Good point.  In general I would recommend using
> > > 
> > > str(df)
> > > 
> > > to check on the class or storage type of all
> > > variables in a data frame
> > > if you are getting unexpected results when
> > > manipulating it.  That
> > > function is carefully written to provide a maximum
> > > of information in a
> > > minimum of space.
> > 
> > Yes but I'm an relative newbie at R and didn't realise
> > that str() would do that.  I always thought it was
> > some kind of string function. 
> > 
> > Thanks, it makes life much easier.
> > 
> > > >
> > > > --- Natalie O'Toole <notoole at mtroyal.ca> wrote:
> > > >
> > > > > Hi,
> > > > >
> > > > > I'm getting an error message:
> > > > >
> > > > > Error in df[, 1:4] * df[, 5] : non-numeric
> > > argument
> > > > > to binary operator
> > > > > In addition: Warning message:
> > > > > Incompatible methods ("Ops.data.frame",
> > > > > "Ops.factor") for "*"
> > > > >
> > > > > here is my code:
> > > > >
> > > > >
> > > > > ##reading in the file
> > > > > happyguys<-read.table("c:/test4.dat",
> > > header=TRUE,
> > > > > row.names=1)
> > > > >
> > > > > ##subset the file based on Select If
> > > > >
> > > > > test<-subset(happyguys, PROV==48 & GRADE == 7  &
> > > > > Y_Q10A < 9)
> > > > >
> > > > > ##sorting the file
> > > > >
> > > > > mydata<-test
> > > > > mydataSorted<-mydata[ order(mydata$Y_Q10A), ]
> > > > > print(mydataSorted)
> > > > >
> > > > >
> > > > > ##assigning  a different name to file
> > > > >
> > > > > happyguys<-mydataSorted
> > > > >
> > > > >
> > > > > ##trying to weight my data
> > > > >
> > > > > data.frame<-happyguys
> > > > > df<-data.frame
> > > > > df1<-df[, 1:4] * df[, 5]
> > > > >
> > > > > ##getting error message here??
> > > > >
> > > > > Error in df[, 1:4] * df[, 5] : non-numeric
> > > argument
> > > > > to binary operator
> > > > > In addition: Warning message:
> > > > > Incompatible methods ("Ops.data.frame",
> > > > > "Ops.factor") for "*"
> > > > >
> > > > > Does anyone know what this error message means?
> > > > >
> > > > > I've been reviewing R code all day & getting
> > > more
> > > > > familiar with it
> > > > >
> > > > > Thanks,
> > > > >
> > > > > Nat
> > > > >



More information about the R-help mailing list