0

我有 2 个 csv 数据文件。1 分钟酒吧和其他 5 分钟酒吧。这两个文件的格式相同。

文件 1 是

> 2007-01-02 10:00:00.000,NIFTY,ABB,2007-01-02 10:00:00.000,750.4,750.4,750,750.2
  2007-01-02 10:01:00.000,NIFTY,ABB,2007-01-02 10:01:00.000,750.38,750.4,749.8,749.8
  2007-01-02 10:02:00.000,NIFTY,ABB,2007-01-02 10:02:00.000,749.8,750,749.6,750
  2007-01-02 10:03:00.000,NIFTY,ABB,2007-01-02 10:03:00.000,749.6,752.4,749.6,752
  2007-01-02 10:04:00.000,NIFTY,ABB,2007-01-02 10:04:00.000,752,755.8,752,754.2
  2007-01-02 10:05:00.000,NIFTY,ABB,2007-01-02 10:05:00.000,754.02,755,752.05,753.6
  2007-01-02 10:06:00.000,NIFTY,ABB,2007-01-02 10:06:00.000,753,753,751,751
  2007-01-02 10:07:00.000,NIFTY,ABB,2007-01-02 10:07:00.000,751,751.62,750.5,751
  2007-01-02 10:08:00.000,NIFTY,ABB,2007-01-02 10:08:00.000,750.8,751,750.2,750.62 

文件 2 是

 > 2007-01-02 10:00:00.000,NIFTY,ABB,2007-01-02 10:00:00.000,750.2,754.2,749.8,753.6
   2007-01-02 10:05:00.000,NIFTY,ABB,2007-01-02 10:05:00.000,753.6,753.6,750.62,752.8
   2007-01-02 10:10:00.000,NIFTY,ABB,2007-01-02 10:10:00.000,752.8,752.8,750.2,751.5
   2007-01-02 10:15:00.000,NIFTY,ABB,2007-01-02 10:15:00.000,751.5,752,751,751.6
   2007-01-02 10:20:00.000,NIFTY,ABB,2007-01-02 10:20:00.000,751.6,751.6,750.8,751
   2007-01-02 10:25:00.000,NIFTY,ABB,2007-01-02 10:25:00.000,751,751.2,749,749
   2007-01-02 10:30:00.000,NIFTY,ABB,2007-01-02 10:30:00.000,749,751.8,749,751.8
   2007-01-02 10:35:00.000,NIFTY,ABB,2007-01-02 10:35:00.000,751.8,752,751.1,751.4

现在我运行 a <- read.csv("file1.csv")

class(a[,1:4]) 是因数

class(a[,5:8]) 是数字

而对于文件 2

b <- read.csv("file2.csv")

class(b[,1:4]) 是因子

class(b[,5:8]) 是因子。

列 5:8 的类别为何是因素。这个因素类型的数据不让我继续我的分析。任何想法。

4

2 回答 2

4

不看实际文件很难说。这些列中可能隐藏了一些字符。

要找出答案,请使用stringsAsFactors = Fin 将read.csv因子作为字符来读取。接下来,使用 . 将字符列转换为数字as.numeric。这将引入 NA 代替实际字符。最后发现使用is.na

注意:可以使用 将因子类型转换为数字as.numeric,但在这种情况下会产生不希望的结果。

于 2013-04-07T04:14:02.960 回答
2

当我将您的示例数据粘贴到两个文件中并在 using 中读取这两个文件时read.csv(),前四列都是因子,第二组四列是数字,所以很遗憾,我无法复制您的问题。可能是文件中的某些内容未包含在您的示例中。

当我将“file2.csv”修改为:

2007-01-02 10:00:00.000,NIFTY,ABB,2007-01-02 10:00:00.000,750.2,754.2,749.8,753.6
2007-01-02 10:05:00.000,NIFTY,ABB,2007-01-02 10:05:00.000,753.6,753.6,750.62,752.8
2007-01-02 10:10:00.000,NIFTY,ABB,2007-01-02 10:10:00.000,752.8,752.8,750.2,751.5
2007-01-02 10:15:00.000,NIFTY,ABB,2007-01-02 10:15:00.000,751.5,752,751,751.6
2007-01-02 10:20:00.000,NIFTY,ABB,2007-01-02 10:20:00.000,751.6,751.6,750.8,751
2007-01-02 10:25:00.000,NIFTY,ABB,2007-01-02 10:25:00.000,751,751.2,749,749
2007-01-02 10:30:00.000,NIFTY,ABB,2007-01-02 10:30:00.000,749,751.8,749,751.8
2007-01-02 10:35:00.000,NIFTY,ABB,2007-01-02 10:35:00.000,a,b,c,d

...我确实发现最后四列是作为因素读入的,因此这向我表明,在“file2.csv”的这些列中的某处可能存在非数字数据。

我还注意到你可能想要使用类似的东西:

a<-read.csv("file1.csv",header=F)
b<-read.csv("file2.csv",header=F)

...为了避免将第一行转换为标题,但是,无论我有header=F没有改变结果。仅供参考,我在 Windows 7 64 位上使用 R 2.15.3。

于 2013-04-07T04:22:17.227 回答