2017-04-26 72 views
0

我正在运行我能想象的最简单的代码。我所做的只是要求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

您得到一个值。它是1.4451。剩下的部分是提醒你'ExchangeRates'是一个不是数字的因素。文件中可能有某些内容不是数字。 – G5W

+1

而且有些东西可能与R认为是其中一个关卡的孤立'.'有关。 – joran

回答

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 = ".")