【发布时间】:2014-05-01 04:44:21
【问题描述】:
我在这些线程上查找了答案,但在我的情况下都没有:
R change all columns of type factor to numeric,
http://cran.r-project.org/doc/FAQ/R-FAQ.html#How-do-I-convert-factors-to-numeric_003f,
How to convert a data frame column to numeric type?
我正在使用我导入的数据框 (8600 x 168):
originaldf2<-read.csv("Occupanyrate_Train")。除了前三列之外,都是数值。许多列在导入后属于factor 类。我需要数字类中从 3 到 168 的所有列进行分析。这些列中有许多空值和“-”,我通过这样做将其转换为 NA:
originaldf2[originaldf2=="-"]=NAoriginaldf2[originaldf2==""]=NA。这些列只包含十进制数、整数和 NA。我尝试使用以下命令将所有变量转换为数值类:
originaldf2<-as.numeric(as.character(originaldf2[ , 4:168])) 我得到错误:Warning message: NAs introduced by coercion 我的数据框本身变得奇怪:
str(originaldf2)
num [1:165] NA NA NA NA NA NA NA NA NA NA ...
我也试过了:as.numeric(levels(originaldf2))[as.integer(originaldf2)]
尝试强制整个数据帧,但我收到错误 Error: (list) object cannot be coerced to type 'integer'
然后我注意到有可能是未使用的级别,所以我删除了未使用的级别:originaldf2<-str(drop.levels(originaldf2)) 并尝试再次强制但仍然没有发生!这是 df (10 x 12) 的一个子集:
Property_ID Month Zipcode Occupancy_Rate.Response.Variable. VAR_1 VAR_2 VAR_3
1 A3FF8CD6 13-Jan 30064 0.93 468 10 0.7142857
2 A3FF8CD6 13-Feb 30064 0.93 468 10 0.7142857
3 A3FF8CD6 13-Mar 30064 0.94 468 10 0.7142857
4 A3FF8CD6 13-Apr 30064 0.96 468 10 0.7142857
5 A3FF8CD6 13-May 30064 0.953 468 10 0.7142857
6 A3FF8CD6 13-Jun 30064 0.93 468 10 0.7142857
7 A3FF8CD6 13-Jul 30064 0.925 468 10 0.7142857
8 A3FF8CD6 13-Aug 30064 0.925 468 10 0.7142857
9 A3FF8CD6 13-Sep 30064 0.95 468 10 0.7142857
10 A3FF8CD6 13-Oct 30064 0.945 468 10 0.7142857
11 A3FF8CD6 13-Nov 30064 0.9 NA <NA> NA
12 A3FF8CD6 13-Dec 30064 0.945 NA <NA> NA
VAR_4 VAR_5 VAR_6
1 0.5714286 0.8 0.75
2 0.5714286 0.8 0.75
3 0.5714286 0.8 0.75
4 0.5714286 0.8 0.75
5 0.5714286 0.8 0.75
6 0.5714286 0.8 0.75
7 0.5714286 0.8 0.75
8 0.5714286 0.8 0.75
9 0.5714286 0.8 0.75
10 0.5714286 0.8 0.75
11 NA NA NA
12 NA NA NA
【问题讨论】:
-
使用
originaldf2 <- read.csv("Occupanyrate_Train.csv", stringsAsFactors = FALSE)再试一次 -
我认为
stringAsFactors不是read.csv中的论据。 . .我收到错误消息:Error in read.table(file = file, header = header, sep = sep, quote = quote, : unused argument (stringAsFactors = FALSE) -
stringsAsFactors不是read.csv的直接参数,而是read.table的参数,随后被调用。 -
我不知道 read.csv 在没有 .csv 扩展名的情况下也能工作
-
所以我添加了
stringsAsFactors参数并尝试:originaldf<-as.numeric(as.character(originaldf[ ,c(sprintf("VAR_%.i", 1:164))]))因为我希望从 1 到 164 的所有变量列都更改为数字但它不起作用!同样的错误 -Warning message: NAs introduced by coercion