Сегодня я наконец решил начать восхождение по крутой кривой обучения Р.Я потратил несколько часов, и мне удалось импортировать мой набор данных и сделать несколько других базовых вещей, но у меня возникли проблемы с типом данных: столбец, содержащий десятичные дроби, импортируется как целое число, а преобразование в двойное число изменяетзначения .
Пытаясь получить небольшой CSV-файл для размещения здесь в качестве примера, я обнаружил, что проблема возникает только тогда, когда файл данных слишком большой (мой оригинальный файлматрица 1048418 на 12, но даже с «только» 5000 строк у меня та же проблема. Когда у меня есть только 100, 1000 или даже 2000 строк, столбец корректно импортируется как двойной).
Здесь - это меньший набор данных (все еще 500 КБ, но, опять же, если набор данных небольшой, проблема не реплицируется).Код:
> ex <- read.csv("exampleshort.csv",header=TRUE)
> typeof(ex$RET)
[1] "integer"
Почему столбец возвратов импортируется как целое число, когда файл большой, если он явно имеет тип double?
Хуже всего то, что если япопытайтесь преобразовать его в удвоение, значения будут изменены
> exdouble <- as.double(ex$RET)
> typeof(exdouble)
[1] "double"
> ex$RET[1:5]
[1] 0.005587 -0.005556 -0.005587 0.005618 -0.001862
2077 Levels: -0.000413 -0.000532 -0.001082 -0.001199 -0.0012 -0.001285 -0.001337 -0.001351 -0.001357 -0.001481 -0.001486 -0.001488 ... 0.309524
> exdouble[1:5]
[1] 1305 321 322 1307 41
Это не единственный столбец, который импортирован неправильно, но я подумал, что если я найду решение для одного столбца, я смогу отсортироватьдругие вышли.Вот еще немного информации:
> sapply(ex,class)
PERMNO DATE COMNAM SICCD PRC RET RETX SHROUT VWRETD VWRETX EWRETD EWRETX
"integer" "integer" "factor" "integer" "factor" "factor" "factor" "integer" "numeric" "numeric" "numeric" "numeric"
Они должны быть в следующем порядке: целое число, дата, строка, целое число, двойное число, двойное число, двойное число, целое число, двойное число, двойное число, двойное число (двойное число типовнеправильно, но, надеюсь, вы поймете, что я имею в виду)