read.table返回最后一列的额外内容

时间:2014-09-29 20:38:42

标签: r read.table

我正在尝试从以下网址阅读该表:

url <- 'http://faculty.chicagobooth.edu/ruey.tsay/teaching/introTS/m-ge3dx-4011.txt'
da <- read.table(url, header = TRUE, fill=FALSE, strip.white=TRUE)

我可以使用head查看数据:

> head(da)
      date        ge        vw        ew        sp
1 19400131 -0.061920 -0.024020 -0.019978 -0.035228
2 19400229 -0.009901  0.013664  0.029733  0.006639
3 19400330  0.049333  0.018939  0.026168  0.009893
4 19400430 -0.041667  0.001196  0.013115 -0.004898
5 19400531 -0.197324 -0.220314 -0.269754 -0.239541
6 19400629  0.061667  0.066664  0.066550  0.076591

这适用于前4列,例如,我可以查看列ew

> head(da$ew)
[1] -0.019978  0.029733  0.026168  0.013115 -0.269754  0.066550

但是当我尝试访问最后一个时,我得到了一些不在txt文件中的额外输出。

> head(da$sp)
[1] -0.035228 0.006639  0.009893  -0.004898 -0.239541 0.076591 
859 Levels: -0.000060 -0.000143 -0.000180 -0.000320 -0.000659 -0.000815 ... 0.163047

如何摆脱额外的输出?谢谢!

1 个答案:

答案 0 :(得分:0)

这是一个因素的代表。

> str(da)
'data.frame':   861 obs. of  5 variables:
 $ date: int  19400131 19400229 19400330 19400430 19400531 19400629 19400731 19400831 19400930 19401031 ...
 $ ge  : num  -0.0619 -0.0099 0.0493 -0.0417 -0.1973 ...
 $ vw  : num  -0.024 0.0137 0.0189 0.0012 -0.2203 ...
 $ ew  : num  -0.02 0.0297 0.0262 0.0131 -0.2698 ...
 $ sp  : Factor w/ 859 levels "-0.000060","-0.000143",..: 226 411 445 42 353 828 613 585 441 684 ...

第58行有一个点而不是一个数字。这是R将变量作为因子处理的充分信息。将点更改为NA或修正错误后,您将能够正确读取数据。

另一个选择是在读入数据后将点更改为有意义的内容,然后将数字强制转换为数字。以下声明将强制执行。到NA。

da$sp <- as.numeric(as.character(da$sp))
> str(da)
'data.frame':   861 obs. of  5 variables:
 $ date: int  19400131 19400229 19400330 19400430 19400531 19400629 19400731 19400831 19400930 19401031 ...
 $ ge  : num  -0.0619 -0.0099 0.0493 -0.0417 -0.1973 ...
 $ vw  : num  -0.024 0.0137 0.0189 0.0012 -0.2203 ...
 $ ew  : num  -0.02 0.0297 0.0262 0.0131 -0.2698 ...
 $ sp  : num  -0.03523 0.00664 0.00989 -0.0049 -0.23954 ...