将因子转换为数字

时间:2015-03-28 16:19:11

标签: r csv import type-conversion

我有一个300万行,500列数据集。尽管列是数字的,但从csv文件导入时,所有列都被视为因子,而不是数字。我试图用命令

将它们转换回数字
wikifixedn<-as.numeric(as.character(wikifixed))

wikifixed是数据帧。

这是永远的...我的MacBook Pro,16GB内存和2.3GHz酷睿i7已经在这里搅拌了一个多小时。我可以在某个地方看到我在这个过程中有多远,或者过程是否正在进行中?这是处理对话问题的另一种更快的方法吗?

BTW:我尝试在导入csv文件时强制使用

将列视为数字
> wikifixed<-read.csv('~/OneDrive/kredible/finaldata/wutao/wikipediausers.csv', header = TRUE, stringsAsFactors=F)

然而,在检查时我得到了

> is.numeric(wikifixed)
[1] FALSE

1 个答案:

答案 0 :(得分: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(默认情况下,使用type.convert时),&#34; NULL&#34; (当跳过列时),其中一个原子向量类(逻辑,整数,数字,复数,字符,原始)或&#34;因子&#34;,&#34;日期&#34;或&#34; POSIXct&#34;。否则,需要有一个as方法(来自包方法)来转换来自&#34;字符&#34;到指定的正式班级。

请注意,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常见问题解答

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