2015-03-28 2 views
2

У меня есть набор столбцов из 3 миллионов строк, 500 столбцов. Хотя столбцы являются числовыми, при импорте из файла csv все рассматриваются как фактор, а не числовые. Я пытаюсь преобразовать их обратно в числовое значение с помощью командыПреобразование коэффициента в числовое

wikifixedn<-as.numeric(as.character(wikifixed)) 

wikifixed - это dataframe.

Это навсегда ... Мой MacBook Pro с 16 ГБ оперативной памяти и 2,3 ГГц Core i7 взбалтывает это более часа. Могу ли я увидеть где-нибудь, как далеко я буду в процессе или если процесс движется? Это еще один, более быстрый метод решения проблемы разговора?

BTW: Я пытался, при импорте файла CSV, чтобы заставить столбцы, которые будут рассматриваться как числовые, используя

> wikifixed<-read.csv('~/OneDrive/kredible/finaldata/wutao/wikipediausers.csv', header = TRUE, stringsAsFactors=F) 

Тем не менее, при проверке я получаю

> is.numeric(wikifixed) 
[1] FALSE 
+3

'as.numeric (уровни (yourfactor)) [yourfactor]' будет быстрее – akrun

+3

Я бы использовал 'fread' из пакета data.table' для чтения. Также посмотрите на аргумент' colClasses' (также в 'read, csv') – user20650

+0

стоит попробовать 'readr :: read_csv ('yourfile')' – ExperimenteR

ответ

1

Смотрите здесь

https://stat.ethz.ch/R-manual/R-devel/library/utils/html/read.table.html

Вы, вероятно, должны создать вектор для colClasses

read.table(file, header = FALSE, sep = "", quote = "\"'", 
     dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"), 
     row.names, col.names, as.is = !stringsAsFactors, 
     na.strings = "NA", colClasses = NA, nrows = -1, 
     skip = 0, check.names = TRUE, fill = !blank.lines.skip, 
     strip.white = FALSE, blank.lines.skip = TRUE, 
     comment.char = "#", 
     allowEscapes = FALSE, flush = FALSE, 
     stringsAsFactors = default.stringsAsFactors(), 
     fileEncoding = "", encoding = "unknown", text, skipNul = FALSE) 

stringsAsFactors

логично: если векторы символов будут преобразованы в факторы? Обратите внимание, что это переопределяется as.is и colClasses, оба из которых позволяют более тонкое управление.

colClasses

знак. Для классов следует использовать вектор классов. При необходимости перерабатывается, или если вектор символа назван, неуказанные значения принимаются как NA.

Возможные значения: NA (по умолчанию используется тип.convert), «NULL» (при пропуске столбца), один из классов векторных атомов (логический, целочисленный, числовой, комплексный, символьный, , или "factor", "Date" или "POSIXct". В противном случае для преобразования из «символа» в указанный формальный класс должен быть метод (из методов пакета).

Обратите внимание, что colClasses указывается для каждого столбца (не для переменной) и поэтому включает столбец имен строк (если есть).

ТАКЖЕ см. Здесь, если вы хотите перейти на data.table, потому что у вас могут возникнуть проблемы.

fread in R imports a large .csv file as a data frame with one row

require(data.table) 
fread("pre2012_alldatapoints.csv", sep = ",", header= TRUE) 

и читать

data.table FAQ по

https://github.com/Rdatatable/data.table/wiki

+0

Большое спасибо @Ajay Ohri – idomeneus

Смежные вопросы