如何隔离值?

时间:2017-04-26 22:33:55

标签: r

我正在运行我能想象到的最简单的代码。我正在做的就是要求R导入一个csv文件,选择一个列,然后显示该值。

DEXUSUK = read.csv('C:/Users/Seth Reuter/Google Drive/GSU/Financial Engineering/Final Project/DEXUSUK.csv')
ExchangeRates = DEXUSUK$DEXUSUK

我需要做的就是拉ExchangeRates[1],它应该返回一个值。相反,我得到了。

> ExchangeRates[1]
[1] 1.4451
2018 Levels: . 1.3658 1.3728 1.3757 1.3780 1.3811 1.3840 1.3960 1.3972 1.3974 1.3989 1.4018 1.4023 1.4034 ... 2.1104
> 

那是2018 Levels的东西是什么?我该如何摆脱它?

这就是我尝试过的。

> ExchangeRates[1]$Value
Error in ExchangeRates[1]$Value : 
  $ operator is invalid for atomic vectors
> ExchangeRates[1]$VALUE
Error in ExchangeRates[1]$VALUE : 
  $ operator is invalid for atomic vectors
> ExchangeRates[1]$value
Error in ExchangeRates[1]$value : 
  $ operator is invalid for atomic vectors

我正在使用的文件是here。我从联邦储备经济数据库下载了它。

1 个答案:

答案 0 :(得分:2)

您的问题是DEXUSUK列包含"。"表示缺失值的字符。因此read.csv将该列解释为字符串,而不是数字。由于您未指定stringsAsFactors = FALSE,因此字符串将转换为因子。

这个问题有很多解决方案。一种是使用RStudio向导导入数据,该向导可以精确控制如何处理列。使用read.csv的修复是这样的:

DEXUSUK <- read.csv("C:/Users/Seth Reuter/Google Drive/GSU/Financial Engineering/Final Project/DEXUSUK.csv", 
                    stringsAsFactors = FALSE, 
                    na.strings = ".")