Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to avoid: read.table truncates numeric values beginning with 0

I want to import a table (.txt file) in R with read.table(). One column in my table is an ID with nine numerals - some ids begin with a 0, other with 1 or 2.

R truncates the first 0 (012345678 becomes 12345678) which leads to problems when using this ID to merge another table.

Can someone give me a hint how to solve the problem?

like image 202
Tim Avatar asked Feb 13 '13 13:02

Tim


2 Answers

As said in Ben's answer, colClasses is the easier way to do it. Here is an example:

read.table(text = 'col1 col2
           0012 0001245',
           head=T,
           colClasses=c('character','numeric'))

  col1 col2
1 0012 1245      ## col1 keep 00 but not col2
like image 136
agstudy Avatar answered Oct 31 '22 14:10

agstudy


A reproducible example would be nice, but: use the colClasses argument to read.table() to specify that you want this column to be read as a character variable, not numeric. Or make them back into character variables after reading them in, using sprintf to pad the numbers with leading zeros. (The former is probably easier.)

like image 32
Ben Bolker Avatar answered Oct 31 '22 14:10

Ben Bolker