R преобразовать экспоненту (читается R как строку) в простое число

Я прочитал файл CSV в R с помощью следующей команды:

myfile <- read.csv('C:/Users/myfilepath.csv', sep=',', header = F)

При этом я получаю красивый фрейм данных, который выглядит примерно так:

year / Variable1 /             Variable2 / etc.
1958 / 1.42547014192473E-08 / 3.06399766669684E-10 / etc.
1959 / 2.05022315791225E-09 / 8.80152568089836E-08 / etc.
1960 / etc. ....                  ....

Однако R, кажется, рассматривает букву E для показателей степени как строку. Поэтому мне нужно сначала преобразовать их в простое число, прежде чем я смогу анализировать данные. Набор данных состоит из 50 строк и 12 столбцов.

Я пробовал as.numeric, но получаю сообщение об ошибке

Ошибка: объект (список) не может быть принужден к типу «двойной»

Любые идеи?


person Simone    schedule 27.04.2016    source источник
comment
Следующие работы: as.numeric(3.06399766669684E-10).   -  person lmo    schedule 27.04.2016
comment
Вам нужно преобразовать отдельные столбцы в числовые, а не весь data.frame сразу. Если все это на самом деле числовое (year, вероятно, целое число, если это имеет значение), вы можете сделать это с помощью sapply(myfile, as.numeric)   -  person alistaire    schedule 27.04.2016
comment
@Sotos, ваше решение избавляется от столбца года, но показатели степени остаются. Спасибо хоть   -  person Simone    schedule 29.04.2016
comment
@Imo Я уверен, что ваше решение работает, просто не очень практично делать это 20x50x24 = 100'960 раз. По крайней мере, это то количество наблюдений, которое у меня будет. Спасибо, что отредактировали мой пост и сделали его красивым.   -  person Simone    schedule 29.04.2016
comment
@alistaire действительно год имеет значение. :-) Попробовал ваше решение. та же проблема, что и с решением Sotos. Думаю, это либо способ импорта данных, либо функция as.numeric.   -  person Simone    schedule 29.04.2016
comment
На самом деле это не вопрос того, есть ли показатели степени (это вещь для печати, которую вы можете обойти с помощью format(... , scientific = FALSE)), это вопрос того, являются ли ваши данные сохраненными символами или числами, которые определяют, что вы можете с ними делать. Если вы хотите сохранить year как целое число, просто перезапишите остальные: myfile[, -1] <- sapply(myfile[, -1], as.numeric)   -  person alistaire    schedule 29.04.2016


Ответы (2)


  1. Вы можете отформатировать DF, используя: format(myfile,scientific=FALSE)

  2. Вы можете использовать «options («scipen» = 100)», прежде чем читать файл.

Если вы видите, что в хвосте есть нули, я предлагаю вам проверить файл csv перед импортом.

person Monte    schedule 27.04.2016
comment
спасибо за предложения. № 1 прошел, но экспоненты сохраняются. № 2 выдал серию сообщений об ошибках при использовании с read.csv или read.table. - person Simone; 29.04.2016

Ответы Сото и Алистера работают, если ячейки в импортируемом csv отформатированы как «научные». В противном случае это не так. Спасибо, парни!

Используемый код:

mydata<- read.csv('C:/Users/mydata.csv', sep=',', na.strings=c("", "NA"), header = F)
mydata <- sapply(mydata, as.numeric)
person Simone    schedule 29.04.2016
comment
Ваш ответ также должен отвечать на вопрос, а не только указывать авторство комментаторов. - person Frank; 29.04.2016