SPSSの使い方を alm-ore で問う

SPSS 暦2ヶ月(総使用時間10時間未満)の僕ちゃんを助けてください.

これができないおかげで,

  • 女の子とデートができない
  • 信長の野望・革新で遊べない
  • イライラしてタバコの量が増え,当方の健康が心配
  • 職場で「キーっ」と怒りの奇声を上げてしまうため,みんなに敬遠される
  • お腹がすいても Cafe Junk にいけない

といった,悲しい状況に追い込まれるわけです.


やりたいこと:ファイルの結合

以下のような二つのファイルがあるなり.

【ファイルA】

ID hoge1 hoge2
1

22

23

2

34

56

3

21

59

【ファイルB】

ID

fooA

fooB

fooC

1

1

34

35

1

2

34

56

2

1

12

23

2

2

45

65

3

1

22

55

3

2

34

57

こいつらを “ID” をキーにして結合したいわけです.
ただし,ファイルB は入れ子になってるわけで.
(ID は同じでも, fooA が規則的に変わる)

【僕の所望するファイル】

ID

hoge1

hoge2

fooA

fooB

fooC

1

22

23

1

34

35

1

22

23

2

34

56

2

34

56

1

12

23

2

34

56

2

45

65

3

21

59

1

22

55

3

21

59

2

34

57

FUCKIN’ SPSSちゃんが吐き出すファイル】

ID

hoge1

hoge2

fooA

fooB

fooC

1

22

23

1

34

35

1

.

.

2

34

56

2

34

56

1

12

23

2

.

.

2

45

65

3

21

59

1

22

55

3

.

.

2

34

57

あーん,神様 HELP! (by チェッカーズ)

う~ん,みんなの羨望の的SAS 様なら8行書けばコンマ何秒で実行してくれるのに・・・

proc sort data=FileA;
by ID;
proc sort data=FileB;
by ID;
data FileC;
merge FileA FileB;
by ID;
run;

誰か,SAS 様を買い与えてください.とりあえず,5年分のライセンス付きで.
#う~ん,ちょっとした車買える?

ていうか,こんなもん書いてないで(tableタグまで手打ちしてしまった),perl とかでスクリプト書いたほうが早い?早いのか!?

そうかもしれない,そうかもしれないが,締切前とかに現実逃避したくなる気持ちは,みんなもわかってくれるはず.
そう,しこたまグチと現実逃避をし終えたので,これから VisualBasic でスクリプト書いて結合するさ.するともさ.

コメント (15)

  1. atashi

    アタシにはなんのこっちゃ、全くわかりませんが
    とにかく切羽&煮詰まっておられるのねん・・・
    あと数日がんばってください。
    そのうち、コーヒーでも差し入れしてあげるわ。

  2. 木公

    現在、2名の同業者の方から、アイディアをいただいております。

    「おいおい、それって契約上やったらマズイっしょ。良識ある社会人の僕チンは、さすがにそれは・・・」
    というアイディアやら、
    「ふむふむ、確かに可能。しかし、扱うデータの数を見たら、手作業でやったら徹夜になっちゃうかもぉ」
    というアイディアまで、本当にありがとうございます。

  3. 木公

    atashiさん:
    激励ありがとうございます。

    “信長の野望・革新”風に言えば、
    「木公部隊の士気が上がっております」
    という感じでしょうか。
    #このクソ忙しい時期に、このゲームを貸してくれた dadaa 氏に感謝しつつも、恨んでみたり

    なお、コーヒーは”ウィンナコーヒー”が大好きと、無理難題を言ってみるテスト。

  4. SPSSはまったく触ったことがないのでぜんぜん的外れかもしれませんが、もしかしたらヒーローになれるかもしれないという下心を出してコメント。ググったらこんなページがありましたけど、大当たり?
    http://www.ats.ucla.edu/stat/spss/modules/merge.htm
    「3. One-to-many merge」のところの、わざと間違えたときの例が俺様の悩みに酷似しています。

  5. 木公

    サンゴロウ商会御中:
    最高です!これです、これこそ僕が求めていたものです!

    細かい話をすると、こういったSPSSのスクリプトは一度も使ったことないのですが、見てみたところ簡単そうなので、チャレンジしてみます。
    今は帰宅してしまったので、明日朝一でやってみます。

    本当に、感謝感激雨あられです。
    ここに書いてくださったおかげで、同業者のみんなも大喜びだと思います。

  6. bamboo

    C++かエクセルのマクロでちょちょいとプログラムを書くに1票

    SASが使えなくなってからは、RとC++(時々SPSSとエクセル)の組み合わせですね。
    Rは最高ですよ。タダだし。

    数十ラウンドある繰り返しのあるゲームをやって、100人の被験者について、1個ずつ回帰式を当てはめて回帰係数を推定し、その分布を取るなんてこと、SPSSでやろうとしたら首をくくりたくなりますが、Rだとあっというま。なにしろ、分析のアウトプットがクラスになってるから、結果の必要な部分だけ抽出可能。

    何がなにやらわからないかも知れませんが、データ処理のステップが増えるほど、Rが楽ということで。

  7. 木公

    bambooさん:
    Rヨサゲですね.

    うちから車で20分くらい走って某N大学に行き,某今年お子さんがお生まれになって幸せいっぱいの某R先生をおだてたうえ,データの入ったCD-Rを手渡し
    「このデータの100人に対して回帰式を当てはめて分布をとりたいのです.明日の朝までに」
    とか言えば,アウトプットが出てくるって事ですね.;-p

    というのはさておき,R のよい教科書ってありますかねぇ?
    僕は学生時代に授業で配布された,某隣の講座にいらっしゃった O先生とY先生が TeX で作った S+ (Rと同じ言語仕様) の資料しか持ってないです.
    Web でいろいろ調べながら遊んでみましたが,イマイチ体系だって使い方がわかるようなところが見つかりませんでした.(数年前の話)

    さてさて,例のデータマージですが,ものすごく簡単にできました.
    新たな問題として,マージしたものを保存するやり方がイマイチわかっていませんが,これはすぐに解決できそうです.

    ありがとうございました.

  8. keyquo

    http://aoki2.si.gunma-u.ac.jp/R/

    R便利ですよね。日本語での説明も猛烈に増えていますし、
    便利度が急激にあがってるような。。。

    SPSSの件、よかったですね。
    僕ならRubyでスクリプト書いて済ますところでした、
    一応、SPSS使いの妻に聞いてみてたんですが、
    とっくに解決してた様で、なによりです。
    早いですね、ネットで交友関係使うと、こういう場合、
    ほんとスゴイなと、改めて思います。

    普通~まあまぁ専門的な統計だとRで
    十分すぎるのですが、CMOSだとか、面倒な
    ことはRでもできるんですかね?よく調べてませんが。

    ネットワークよりの計算で前に使ったんですが、、、
    サイズがでかくなったら、ちょっと苦しくって、
    やめちゃいました。1年振りくらいに、観たら、
    びっくりなくらい進展してるんですね・・・R。

  9. 木公

    keyquoさん:
    Rの使い方ページの情報ありがとうございます.
    目次をざらっと見てみただけですが,これだけ網羅されてると,僕が使う分には十分なようですね.

    今まで,Rは”ネットワークの外部性”が低い状態だった(周りで誰もRを使っていないので,困ったことをすぐに聞けない,とか)のですが,少なくとも alm-ore 読者に2人はユーザーが居ることがわかったので,わりと安心して乗り換えられるかも,です.

    しかし,alm-ore 始まって以来の高度に専門的な情報交換(あくまで個体内比較ですよ)で,ちょっと感激しています.

  10. bamboo

    この日本語のページ、レファレンスとしては最高ですね。

    最初は、Rのページに行って(googleで”R”と入れるとトップで出てくる)、Manual->An introduction to Rを読みながら、実際に動かして見た方がよいです。もう一つのオススメはDalgaard, P. (2002). Introductory statistics with R. Springer: New York. 前者はただのデモンストレーションなので、細かなtipsや必要な概念がわかりにくいです。

    あと、「Y1をX1で予測し、回帰係数だけとりだして、配列の最初に格納し(繰り返し100)、最後に、配列の中の100個の数字を書き出す」という作業をRでやるには、やっぱり100行以上のコマンドが必要なので、それはCでもなんでも適当な言語で作成してます。できたものをコピペして関数としてRで走らせれば、あっという間に、できあがり。

    100個の回帰式をするためには、SPSSでもプログラムを書く必要があるので同じですが、とにかく、アウトプットがクラスとして実装されているのは便利です。

    >CMOSだとか

    AMOSでしょうかね?AMOSのようにグラフィカルな分析はできないでしょうね。自分で方程式を書き下してモデルフィッティングできるなら、多分、できます。

    元々が、統計モデルを自分で作る人たち向けなので、統計のエンドユーザーが得るメリットは、限定されているでしょうね。それに元々、工学/医学向けみたいですし。

  11. keyquo

    ひゃー恥ずかしい>bamboo様、
    コメントありがとうございます。AMOSでしたっけ(^_^;)
    使ったことはありません。心理や社会学系の王道を何一つ
    しらない情報系なもので、、、
    Rもsna(Social Network Analysis)
    しか使ってませんので、かなりイレギュラーなユーザだと
    想います(^_^;)  妻がWinでSPSSでなにやらイロイロしてる
    もので、Rならフリーなのに・・・という話から、じゃぁAMOSとか
    できるの?と言われ、いろいろざっと観たときに、あぁーそういう
    のは結構キツイのかなー、少なくとも自分で組むくらい理解
    してないと、駄目ですなーと思ったことを想い出しながら書いてしまっておりました。恐縮です。

    統計を、それも自分でモデルを作る人たちには、
    「車輪を二回発明する手間」を排除した、本当に
    素晴らしいプラットフォームでしょうね♪

    私は、当時は、WinでBorlandのC++Builderで
    GUIまわりを作って、基本的なネットワークデータを
    テキストファイルで吐いた後、RをBCBから起動して
    データ吸わせてスクリプトを走らせて、結構面倒な
    計算を、結構早く解いてもらってました。

    今では全部boostのGraph Libraryに引っ越したので、
    木公さん>すいません、ちょっと木公さんのお役には
    立たなそうな予感(^_^;) というか、むしろ、社会心理
    調査などを、教えて頂きたい勢いなのですが(^_^;)

  12. 木公

    昨夜の夜までは、かなりR熱が高まっていたのですが「統計のエンドユーザーが得るメリットは少ない」で恋も冷めちゃいました。;-p

    「社会心理の調査教えてくれー」と言われましても、「僕は実験屋だから・・・」とちょっと重箱の隅をつつきつつ、そういや僕が学部3年生の時、当時4年生だった人1名とM2だったbambooさんと3人で、コンピュータソフトの違法コピーの social network のsnow ball sampling 調査の真似事したなぁとちょっと懐かしい気分に浸ってみたり。
    赤紫の表紙の “Network Analysis” (だっけ?)と首っ引きで UCINET (でしたっけ?)使っていろいろデータをひっくり返してみたねぇ、若かったねぇ、と思い出してみたり。

  13. keyquo

    赤紫だと、ワッサーマン(Wasserman)の
    Social Network Analysisですね。
    おぉー、SNAの大先輩じゃないっすか。

    Rは、たしかにエンドユーザには、ちょっと敷居が高い
    ですよね・・・私もそうなので(^_^;)

    bambooさんは、そうですか、大学のアノ研究室の、
    3つ上の代の方なんですね。濃いですねー皆様。
    だいたい、「実験系ですから」と言われても、
    それが重箱の隅だと気づかないくらいなもので(^_^;)
    いえ、微妙にわかってきましたけど。なるほどー。。。。

  14. bamboo

    >「統計のエンドユーザーが得るメリットは少ない」

    実は今、十数年ぶりにMacに戻ってきたんですよ。けど、Mac用のSPSSはない。だから、Rを使ってるっていうのもあるんです。良いですよ、Mac。関係ないけど。

    >snow ball sampling 調査の真似事したなぁ

    懐かしいですね。あの彼は今どこへ行ったのか知ってますか?大学卒業後、ジュニアノベル小説家を目指して、代○木アニメーション学院へいった、あの彼。

    keyquoさん

    おお。僕も、BCB++ユーザーでしたよ。実は、モデルを作って当てはめるにしても、数値シミュレーションをやって強引にパラメータを推定する事が多い(というか、それしかできない複雑なモデルが分析されたりする)ので、汎用のプログラミング言語が結構便利だったりします。

  15. 木公

    僕の記憶が確かなら、SPSSって最初のバージョンは Mac しか(「もあった」の間違いかな?)なかったんじゃありませんでしたっけ?
    本家の Mac が開発中止になって、Win 一本になってしまったのかなぁ?

    ていうか、Mac に戻って、やっぱりエラーの音声は例の「アンタ馬鹿ぁ?」ですか?
    「みゅっ」という声とともに Emi Clock が起動してますか?

    代○木アニメーション学院に進学なさった彼は、意外と売れっ子作家になってるかもしれませんね。
    今日日、エロゲーがたくさん発売されているので1本くらいシナリオかいてるかも。(。。)\ばき☆
    いやいや、エロゲーなどではなく、女子中高生向けの学園物など書いて、僕よりも女の子にモテモテかもしれません。

    で、「調査」と「実験」の区別ですが、僕自身は前者は”現象の記述”、後者は”現象の説明”という違いがあるのではないかと思っています。
    調査では変数間の相関はわかりますが、因果関係はわからない。因果関係を特定するためには、実験を行って独立変数を操作しないとダメだと思うわけです。
    調査と実験、どっちが偉いとかいう意味じゃなくて、それぞれに異なる tips があるので、僕は後者の方しかわからんという意味です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です