您好我正在尝试将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
答案 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...]