在R中将data.frame从字符转换为数字以用于时间序列函数

在R中将data.frame从字符转换为数字以用于时间序列函数,r,time-series,R,Time Series,我目前正在使用R(3.2.1),在将数据集转换为数字以便绘制时间序列图时遇到了一些问题 我读取从html页面源中提取的数据表,并将其存储在全局环境中。 我无法将data.frame从字符转换为数字,这是数据标题的示例 > head(World) World V3 "5,689" V4 "4,672" V5 "4,344" V6 "3,745" V7 "4,246" V8 "4,823" 这是我的数据结构 > str(World) 'data.frame': 108

我目前正在使用R(3.2.1),在将数据集转换为数字以便绘制时间序列图时遇到了一些问题

我读取从html页面源中提取的数据表,并将其存储在全局环境中。 我无法将data.frame从字符转换为数字,这是数据标题的示例

> head(World)
    World  
V3 "5,689"
V4 "4,672"
V5 "4,344"
V6 "3,745"
V7 "4,246"
V8 "4,823"
这是我的数据结构

> str(World)
 'data.frame':  108 obs. of  1 variable:
 $ World: chr  "1,234" "1,234" "1,234" "4,321" ...
但是,我想将这些数据转换为时间序列

ts(as.data.frame(sapply(World, function(x) gsub("\"", "", x))))
给我字符类型的整数值,例如

Time Series:
Start = 1 
End = 6 
Frequency = 1 
     World
[1,]    49
[2,]    41
[3,]    37
[4,]    32
[5,]    36
[6,]    43
我试过了

 as.numeric(as.character(World[,1]))
但它给了我NA值和警告信息:NAs是由强制引入的

我可以在没有引号的情况下看到World的值,等等,但是,当我将其用作时间序列时,值会发生变化

我希望我的最终产品是

Time Series:
Start = 1 
End = 6 
Frequency = 1 
     World
[1,]    5,689
[2,]    4,672
[3,]    4,333
[4,]    3,745
[5,]    4,246
[6,]    4,823
我将非常感谢您给予的任何帮助


谢谢

警告消息是因为您的“数字”中有逗号。删除逗号(或者将它们转换为句点,如果它们应该是十进制分隔符的话),那么转换为数字就可以了

另外,您的
World
对象似乎不是data.frame,因为data.frames不会用引号打印字符向量。更有可能的是,这是一个矩阵

R> # if the comma is a thousands separator
R> ts(as.matrix(as.numeric(gsub(",", "", World[,1]))))
Time Series:
Start = 1 
End = 6 
Frequency = 1 
     Series 1
[1,]     5689
[2,]     4672
[3,]     4344
[4,]     3745
[5,]     4246
[6,]     4823
R> # if the comma is a decimal separator
R> ts(as.matrix(as.numeric(gsub(",", ".", World[,1]))))
Time Series:
Start = 1 
End = 6 
Frequency = 1 
     Series 1
[1,]    5.689
[2,]    4.672
[3,]    4.344
[4,]    3.745
[5,]    4.246
[6,]    4.823

逗号代表千,还是小数点?