Как преобразовать символ в датафрейме в числовой без потери десятичной дроби - PullRequest
1 голос
/ 12 июня 2019

Предположим, база данных в следующем формате

Voltage Global_intensity Sub_metering_1
 <chr>   <chr>            <chr>         
1 234.840 18.400           0.000         
2 233.630 23.000           0.000         
3 233.290 23.000           0.000         
4 233.740 23.000           0.000         
5 235.680 15.800           0.000         
6 235.020 15.000           0.000         
7 235.090 15.800           0.000         
8 235.220 15.800           0.000         
9 233.990 15.800           0.000         
10 233.860 15.800           0.000         
# ... with 2,075,249 more rows

Я хочу преобразовать эти символьные переменные типов столбцов в числовые без потери десятичных цифр

df1$Voltage <-as.double(df1$Voltage,options(digits = 8))
 Voltage Global_intensity Sub_metering_1
     <dbl> <chr>            <chr>         
 1    235. 18.400           0.000         
 2    234. 23.000           0.000         
 3    233. 23.000           0.000         
 4    234. 23.000           0.000         
 5    236. 15.800           0.000         
 6    235. 15.000           0.000         
 7    235. 15.800           0.000         
 8    235. 15.800           0.000         
 9    234. 15.800           0.000         
10    234. 15.800           0.000         
# ... with 2,075,249 more rows

Теперь яполучить такой результат с потерей десятичных цифр.Как это исправить?

1 Ответ

2 голосов
/ 12 июня 2019

Ключевым моментом является различие между тем, что показано, и тем, что хранится.Voltage сохраняется с полной точностью.

DF[] <- lapply(DF, as.numeric)
DF$Voltage
## [1] 234.84 233.63 233.29 233.74 235.68 235.02 235.09 235.22 233.99 233.86

Примечание

Lines <- "Voltage Global_intensity Sub_metering_1
1 234.840 18.400           0.000         
2 233.630 23.000           0.000         
3 233.290 23.000           0.000         
4 233.740 23.000           0.000         
5 235.680 15.800           0.000         
6 235.020 15.000           0.000         
7 235.090 15.800           0.000         
8 235.220 15.800           0.000         
9 233.990 15.800           0.000         
10 233.860 15.800           0.000"

library(tibble)
DF <- as_tibble(read.table(text = Lines, colClasses = "character"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...