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?
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.
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With