r-批量将Factors转换为Numeric,矩阵方法不起作用



你好,我正试图将一个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 

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

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...]

最新更新