司创建megafile R中

司创建megafile R中

问题描述:

我在为r的数据帧:司创建megafile R中

   Category1   Category 2  x    y x.x 
1      T     A  1    9 9 
2      T     B  2    8 9 
3      T     A  10    7 9 
4      T     C  19    6 9 
         z   a x.y   x.y x.y 
1   0.11111111   1 2342 0.0004269855 0.000 
2   0.22222222   3 2342 0.0012809564 0.001 
3   0.33333333   13 2342 0.0055508113 0.006 
4   0.44444444   32 2342 0.0136635354 0.014 

的最后两列 - 因某种原因 - 不显示我给他们(说x.1x.2)这个名字,而是始终显示倒数第三列名称。第x.1列是a/x.y,x.2的分割结果,只是四舍五入的结果。现在,已经创造了这个data.frame(约4,000 rows)我创建了一个简单的CSV:

write.csv(DF, 'DF.csv') 

这 - 奇怪 - 产生34 GB文件。当我忽略最后两列时,它变成了一个小文件2MB。我怎样才能避免这个庞大的文件,它从哪里来?

编辑


除法运算:

DF$x.1 <- DF$a/DF['x.y'] 

数据加载:

DF <- read.csv('data.csv', sep=';') 
+0

嗨,Arun,我编辑了一些东西,但是,由于内容是保密的,我无法粘贴CSV。但是,这并不重要,因为在除最后一个列以外的所有列上使用write.csv时都是如此。这一个部门似乎产生了一个巨大的专栏 - 但我不知道为什么。 – oliver13 2013-02-08 23:18:46

+3

它非常重要,因为如果没有办法在我们的机器上重现此行为,我们无法调查可能发生的情况。 – joran 2013-02-08 23:26:46

+2

@ oliver13要开始,我会做'DF $ x.1 agstudy 2013-02-08 23:27:49

要避免语法错误,我认为transform很适合这里。使用它,您可以使用干净的语法基于现有列创建新列。

transform(DF,x.1 = a/x.y,x.2 = round(a/x.y,3)) 
    Category1 Category X2 x y x.x   z a x.y   x.1 x.2 
1   1  TRUE A 1 9 9 0.1111111 1 2342 0.0004269855 0.000 
2   2  TRUE B 2 8 9 0.2222222 3 2342 0.0012809564 0.001 
3   3  TRUE A 10 7 9 0.3333333 13 2342 0.0055508113 0.006 
4   4  TRUE C 19 6 9 0.4444444 32 2342 0.0136635354 0.014