在R中将data.frame从字符转换为数字以用于时间序列函数
我目前正在使用R(3.2.1),在将数据集转换为数字以便绘制时间序列图时遇到了一些问题 我读取从html页面源中提取的数据表,并将其存储在全局环境中。 我无法将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
> 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
逗号代表千,还是小数点?