Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert scientific notation to numeric, preserving decimals

For some reason, when I convert a character column of numbers in scientific notation, the decimals aren't preserved.

> str(output)
'data.frame':   213950 obs. of  2 variables:
 $ ColA    : chr  ".3370E+03" ".3375E+03" ".3380E+03" ".3385E+03" ...
 $ ColB    : chr  ".4942E+00" ".5295E+00" ".5682E+00" ".6091E+00" ...

> output$ColA = as.numeric(output$ColA)

> str(output)
'data.frame':   213950 obs. of  2 variables:
 $ ColA    : num  337 338 338 338 339 ...
 $ ColB    : chr  ".4942E+00" ".5295E+00" ".5682E+00" ".6091E+00" ...

I would expect it to read:

$ ColA    : num  337 337.5 338 338.5 ... 

I tried the solution from this SO question, but no luck:

> options(digits=9)
> str(output)
'data.frame':   213950 obs. of  2 variables:
 $ ColA      : num  337 338 338 338 339 ...
 $ ColB      : chr  ".4942E+00" ".5295E+00" ".5682E+00" ".6091E+00" ...

What's going on?

like image 422
digitalwaterfall Avatar asked Jun 23 '17 15:06

digitalwaterfall


People also ask

How do you convert from scientific notation to standard notation?

When converting from standard form to scientific notation, start by placing the decimal point after the first significant digit. For example, in the number 54,000,000,000 the decimal would be placed between the 5 and the 4. Now multiply this (5.4) by a power of ten.

How do you write 0.00001 in scientific notation?

Hence, the scientific notation of \[0.00001\] is $ 1 \times {10^{ - 5}} $ . So, the correct answer is “ $ 1 \times {10^{ - 5}} $ ”. Note: Scientific notation is a way of expressing numbers that are too large or too small to be conveniently written in decimal form.


1 Answers

You can turn off scientific notation for numbers using the option below;

options(scipen = 999)

That would make all the numbers to appear as decimals.


If you want to revert it back to the default, use

options(scipen = 0)

See getOption("scipen") for more options.

like image 175
M-- Avatar answered Sep 19 '22 15:09

M--