将因子转换为数字批量,矩阵方法不起作用

时间:2013-12-05 23:31:08

标签: r dataframe numeric factors

您好我正在尝试将html表作为data.frame导入,并且列作为因素进入。我需要将它们转换为数字,我可以做,但是当我使用单一方法时,它需要很长时间并将它们转换为矩阵修剪数字。有人可以解释如何将第2列:第6列中的所有数字转换为保持正确数字长度的数字吗?

nms = c("State/Territory", "FY 2008"  ,"FY 2009",   "FY 2010", "FY 2011",   "FY 2012") 
x <- data.frame(readHTMLTable('http://www.fns.usda.gov/pd/15SNAPpartPP.htm'), stringsAsFactors = F) 
x <- x[5:57,] 
names(x) <- nms 
snap.partpp <- x 

这是我试图解决此问题的方法,但它会进行转换,但会更改数字的值

x <- data.frame(readHTMLTable('http://www.fns.usda.gov/pd/15SNAPpartPP.htm'), stringsAsFactors = F) 
y <- x[5:57, 1] 
x <- data.matrix(x[5:57,2:6]) 
xy <- data.frame(y, x) 
names(xy) <- nms 
snap.avghh <- xy 

1 个答案:

答案 0 :(得分:1)

答案在评论中,但这是你的想法吗?

sapply(x[,2:6],function(x){as.numeric(gsub(",","",x))})

产生这个:

      FY 2008  FY 2009  FY 2010  FY 2011  FY 2012
 [1,]    56977    64385    76445    86044    91298
 [2,]   627660   813987  1018171  1067617  1123974
 [3,]   377883   411153   466598   486451   502125
 [4,]  2220127  2670341  3238548  3672980  3964221
 [5,]   252933   319121   404679   453103   491630
 [6,]   225383   258165   336064   378677   403466
 [7,]    74429    90933   112513   134927   148257
 [8,]    89442   103311   118493   134845   141147
 [9,]  1454928  1952362  2603185  3074671  3353064
[10,]  1021155  1286078  1591078  1780039  1912839
[11,]    27874    31511    36926    40631    43727 [truncated...]