我正在使用readHTMLTable并且在列上执行计算时遇到困难,因为当我使用as.numeric转换为numeric时,列中的值会从值更改为rank。 任何人都可以帮忙
a=readHTMLTable("http://www.nhl.com/ice/standings.htm?season=20132014&type=LEA",which=3,trim=F)
> a[,5]
[1] 54 54 52 52 51 51 46 46 46 46 43 45 42 43 39 40 38 37 38 35 37 37 38 36 36 34 35 29 29 21
Levels: 21 29 34 35 36 37 38 39 40 42 43 45 46 51 52 54
> a[,5]=as.numeric(a[,5])
> a[,5]
[1] 16 16 15 15 14 14 13 13 13 13 11 12 10 11 8 9 7 6 7 4 6 6 7 5 5 3 4 2 2 1
我希望能够对[,5]的值执行函数,而不是对等级执行。例如mean(a [,5])=(54 + 54 + 52 ... + 21)/ 30,而不是
平均值(A [5])
[1] 8.933333
答案 0 :(得分:0)
问题是尝试将因子变量转换为数字。请参阅this post。
处理问题的规范方法是as.numeric(levels(a[,5]))[a[,5]]
但是,我经常使用的方法是as.numeric(as.character(a[,5]))
,因为它更容易记住。