0

SPSS に、100K 以上の行と 100 を超える列を持つデータセットがあります。行と列の両方を同時に新しい SPSS データセットにフィルター処理したいと考えています。

Rのコマンドを使用して、これを非常に簡単に実現できますsubset。たとえば、次のようにします。

new_data = subset(old_data, select = ColumnA >10, select = c(ColumnA, ColumnC, ColumnZZ))

さらに簡単なのは次のとおりです。

new data  = old_data[old_data$ColumnA >10, c(1, 4, 89)]

代わりに列インデックスを渡しています。

SPSSで同等のものは何ですか?

私は R が大好きですが、SPSS の読み取り/書き込みとデータ管理の速度は大幅に優れています。

4

2 に答える 2

4

Rよりも「SPSSの読み取り/書き込みおよびデータ管理速度が大幅に優れている」と書いているとき、あなたが正確に何を指しているのかわかりません。あなたの質問自体は、データ管理におけるRの柔軟性を示しています! また、10 万行と 100 列のデータセットは、決して大きなものではありません。

しかし、あなたの質問に答えるために、おそらくあなたはこのようなものを探しています. GUIではなく「プログラムによる」ソリューションを提供しています。これは、プログラミング側に焦点が当てられているStack Overflowで質問しているためです。ここにあるサンプル データ ファイルを使用しています: http://www.ats.ucla.edu/stat/spss/examples/chp/p004.sav

そのファイルを SPSS 作業ディレクトリに保存し、SPSS シンタックス エディターを開いて、次のように入力します。

GET FILE='p004.sav'.
SELECT IF (lactatio <= 3).
SAVE OUTFILE= 'mynewdatafile.sav'
  /KEEP currentm previous lactatio.
GET FILE='mynewdatafile.sav'.

ただし、おそらく、次のようなことを行う必要があります。

FILE HANDLE directoryPath /NAME='C:\path\to\working\directory\' . 
FILE HANDLE myFile /NAME='directoryPath/p004.sav' . 
GET FILE='myFile'.
SELECT IF (lactatio <= 3).
SAVE OUTFILE= 'directoryPath/mynewdatafile.sav'
  /KEEP currentm previous lactatio.
FILE HANDLE myFile /NAME='directoryPath/mynewdatafile.sav'.
GET FILE='myFile'.

これで、列が 3 つしかなく、"lactatio" 列の値が 3 より大きい新しいファイルが作成されたはずです。

したがって、基本的な手順は次のとおりです。

  1. 操作するデータをロードします。
  2. 関心のあるすべてのケースのすべての列のサブセット。
  3. 関心のある変数のみを含む新しいファイルを保存します。
  4. 続行する前に、その新しいファイルをロードします。

R では、基本的な手順は次のとおりです。

  1. 操作するデータをロードします。
  2. 行と列のサブセットを使用してオブジェクトを作成します (方法は知っています)。

うーん....あなたのことはわかりませんが、どちらの方法が好きかはわかります;)

R で適切なツールを使用している場合、速度が本当に問題になる場合は、最初にデータセット全体を読み込まずに、関心のある特定のサブセットを直接読み取ることもできます。

于 2013-02-06T05:45:02.997 に答える
0

spss では、1 つのコマンドで 2 つのアクションを組み合わせることはできませんが、2 つのコマンドで行うのは簡単です。

dataset copy old_data. /* delete this if you don't need to keep both old and new data.
select if ColumnA>10.
add files /file=* /keep=ColumnA ColumnC ColumnZZ.
于 2016-05-26T07:10:37.813 に答える