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