我正在使用包避风港从R编写SPSS .sav文件,这对我来说非常有用。但是我注意到使用write_sav()写在磁盘上的.sav文件大小似乎比nescessary大得多。每当我在SPSS中打开并保存由write_sav()写的.sav文件时,文件大小就会减少到10倍!
这对我很重要,因为我正在为其他人写SPSS相当大的数据,有时SPSS拒绝打开一个非常大的文件。如果write_sav()能够更有效地存储在"真正的"中,那么问题就不会出现。原生的SPSS方式?
有没有人知道这个问题,也许有一个有用的评论呢? 需要SPSS安装才能复制此问题
答案 0 :(得分:0)
从Haven write_sav()文档中不清楚,但听起来它将它们保存为未压缩的.sav文件。 (大多数)SPSS安装的默认设置是保存为压缩文件。 SPSS有一个额外的压缩选项'zCompressed',它会生成更小的文件,但这些文件通常不能在SPSS之外打开。
你可以这样试验;
Save outfile = 'Uncompressed file.sav'
/UnCompressed.
Save outfile = 'Compressed file.sav'
/Compressed.
Save outfile = 'ZCompressed file.zsav'
/ZCompressed.
请注意,.zsav文件扩展名不是必需的(可能是.sav),但最好的做法是使用它来明确兼容性可能存在的问题。
答案 1 :(得分:0)
您的实际数据采用什么形式?是Codepage还是Unicode;避风港在做什么?从SPSS 16.0和引入UNICODE设置开始,从代码页转换为Unicode时,字符串字段的宽度增加了三倍。这是一次只能承受一次的痛苦。将您的数据保存为unicode,然后留在那里。
答案 2 :(得分:0)
如果输出大小有问题,则可以查看我的软件包readspss
。使用压缩和zsav,您应该能够获得最佳的压缩率。 sav文件中的压缩取决于文件的写入方式。 SPSS具有不同的压缩方法来存储数字信息。数值只能存储为双精度(不压缩),也可以存储为双精度和int8_t的混合(压缩1)。 Zsav使用zlib压缩任何初始输入(压缩2)。八个整数取双倍大小,因此文件大小也不同。
答案 3 :(得分:0)
SPSS(.sav)文件格式有三种变体:
Sub axis()
Dim xytitle As chart
Set xytitle = Worksheets("graph").ChartObjects(1).chart
With xytitle.axes(xlCategory)
.HasTitle = True
.AxisTitle.Text = "Treatment"
.AxisTitle.Font.Size = 11
.AxisTitle.Font.Bold = False
End With
With xytitle.axes(xlValue)
.HasTitle = True
.AxisTitle.Text = "Grain weight"
.MaximumScale = 60
.MajorUnit = 10
.AxisTitle.Font.Size = 11
.AxisTitle.Font.Bold = False
End With
End Sub
添加到compress=TRUE
我已提交pull request,以将压缩(2)格式设置为默认格式。