我已将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
请告诉我如何导入表格,以便我可以正确分析数据。
答案 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)