导入html表

时间:2014-02-26 09:32:03

标签: html r web-scraping html-table

我已将html表导入 R

require(XML)
u='http://www.ininternet.org/calorie.htm'
tables = readHTMLTable(u)
my.table=tables[[9]]
View(my.table)

但是,当我想分析数据并应用任何函数时,我现在遇到了问题,例如

> mean(PROTEINE)
Warning message:
In mean.default(PROTEINE) :
  argument is not numeric or logical: returning NA

请告诉我如何导入表格,以便我可以正确分析数据。

2 个答案:

答案 0 :(得分:3)

您正在尝试计算“因子”类型变量的平均值:

> lapply(my.table, class)
$ALIMENTO
[1] "factor"

$PROTEINE
[1] "factor"

$GRASSI
[1] "factor"

$CARBOIDRATI
[1] "factor"

$CALORIE
[1] "factor"

$COLESTEROLO
[1] "factor"

您需要先将其转换为数字。考虑:

tmp <- as.numeric(as.character(my.table$PROTEINE))
mean(tmp)
## [1] 10.81395

请参阅this question and answer以获取解释。

答案 1 :(得分:2)

它们都是因素,将它们改为字符和数字,如下所示:

my.table[,1] <- sapply(my.table[,1], as.character)
my.table[,2:6] <- sapply(my.table[,2:6], function(x) as.numeric(as.character(x))

或者在原始阅读中,指定stringsAsFactors=F。但这并不完美,因为它使一切都成为一个角色,所以你仍然需要转换为数字

tables = readHTMLTable(u,stringsAsFactors=F)
my.table[,2:6] <- sapply(my.table[,2:6], as.numeric)