3

Spss .netライブラリhttp://spss.codeplex.comを使用して.savファイルを作成していますが、ケースの作成方法が見つからないようです。私はC#を使用しています。

誰かが私を正しい方向に向けてくれませんか?

4

2 に答える 2

4

ネイティブのspssio32/64を使用せず、SPSSの32ビットおよび64ビットの問題に対処する必要がないように、DLLのネイティブ実装を作成しました。これは、SPSS / PSPP仕様に基づいて機能し、前述のSpssLibの続きです。

次のようにレコードを書き込む例:

// Create Variable list
var variables = new List<Variable>
{
    new Variable
    {
        Label = "The variable Label",
        ValueLabels = new Dictionary<double, string>
                {
                    {1, "Label for 1"},
                    {2, "Label for 2"},
                },
        Name = "avariablename_01",
        PrintFormat = new OutputFormat(FormatType.F, 8, 2),
        WriteFormat = new OutputFormat(FormatType.F, 8, 2),
        Type = DataType.Numeric,
        Width = 10,
        MissingValueType = MissingValueType.NoMissingValues
    },
    new Variable
    {
        Label = "Another variable",
        ValueLabels = new Dictionary<double, string>
                    {
                        {1, "this is 1"},
                        {2, "this is 2"},
                    },
        Name = "avariablename_02",
        PrintFormat = new OutputFormat(FormatType.F, 8, 2),
        WriteFormat = new OutputFormat(FormatType.F, 8, 2),
        Type = DataType.Numeric,
        Width = 10,
        MissingValueType = MissingValueType.OneDiscreteMissingValue
    }
};
// Set the one special missing value
variables[1].MissingValues[0] = 999;  

// Default options
var options = new SpssOptions();

using (FileStream fileStream = new FileStream("data.sav", FileMode.Create, FileAccess.Write))
{
    using (var writer = new SpssWriter(fileStream, variables, options))
    {
        // Create and write records
        var newRecord = writer.CreateRecord();
        newRecord[0] = 15d;
        newRecord[1] = 15.5d;
        writer.WriteRecord(newRecord);

        newRecord = writer.CreateRecord();
        newRecord[0] = null;
        newRecord[1] = 200d;
        writer.WriteRecord(newRecord);
        writer.EndFile();
    }
}

GitHubでソースを検索し、NuGetでバイナリを検索します。

于 2016-05-19T09:57:09.440 に答える
0

次のstackoverflowの投稿に対するmerthsoftの回答は、spssを起動して実行するための良い出発点を提供します。 C#で64ビットSPSSライブラリを使用する

私が個人的に持っていたハングアップには、次のような適切なdllがすべて含まれていました... spssio64.dll icudt32.dll icuin32.dll icuuc32.dll

データをエクスポートするときは、すべての列が一意である必要があります。

merthsoftと同様のパターンに従った場合、ケースを作成するための可能な解決策は、このメソッドをラップして公開することです...

[DllImport( "spssio64.dll"、EntryPoint = "spssCommitCaseRecord" .. ..

これでうまくいくことを願っていますが、将来これに遭遇する人にとっては、これが役立つかもしれません。

于 2013-07-24T15:42:12.620 に答える