• 締切済み

SASのこと・・・

hiko758の回答

  • hiko758
  • ベストアンサー率33% (1/3)
回答No.1

こんばんわ。 ちょっとこの質問だけでは、判断しかねますね。 データの読み込み方が間違っているかもしれません。できれば、プログラムを見せていただければちゃんと回答できるかもしれません。 RANKプロシジャでOUTで出力したファイルも1、2行しか出てきていないのでしょうか。

tu-ei
質問者

お礼

回答ありがとうございます。 お礼が遅くなりすみません。 どうにか、解決しました。 ありがとうございます。

関連するQ&A

  • SASでカイ二乗値を求めるには

     下のデータのカイ二乗値を求めたいのですが、SASとS-Plusの操作方法について教えてください。  好き  嫌い  計  70   30   100  SASでは、 DATA KAI; INPUT SUKI KIRAI KEI; CARDS; 70 30 100 ; PROC FREQ DATA=KAI; TABLES (行*列)/CHISQ; RUN;  のようになるはずですが、すでに集計されているデータからカイ二乗値を求めるには、FREQ でクロス集計する必要はないですよね?でも、他の方法が分からないのです・・・。  

  • ストアドから得られるレコードセットを、別のストアドで利用したい

    現在、実行するとあるレコードセット(1行1列のみ)を返すストアドプロシージャProc_Aがありますが、このプロシージャを実行して得られる結果を、 別のプロシージャProc_Bで、以下のような形で使用したいと考えています。 ただし、Case文内部でのストアドの実行や、変数へのストアドの実行結果の代入を試しましたが、どちらもうまくいっていません。 なにか、よい解決策があれば、教えていただければ、と思います。 パターンA) Case内部で直接実行 select case Table_A.param_1 when 0 then Exec Proc_A '***','**' else '' end パターンB)いったんパラメータとして取得 declare @values as char(10) execute sp_executesql N'@values = Proc_A ''***'',''**''', N'@values char(10) OUTPUT', @values OUTPUT

  • SQL Server 2008 を使用しています。bcpコマンドでクエ

    SQL Server 2008 を使用しています。bcpコマンドでクエリー結果をエクスポートする際に、1行目に列名を含めるにはどうしたらよいでしょうか? >bcp "select * from [db1].[dbo].[table1]" queryout output.txt -c -t"," -r"\n" -T などとしてクエリー結果をテキスト出力する際、上記のコマンドを実行すると1行目からいきなり条件に一致したデータで始まってしまうのですが、1行目に列名を含めるにはどうしたらよいでしょうか?

  • MS SQL上にあるデータベースのデータをExcelにエクスポートしようとすると65536行以上書き込めずにエラーが出てきてしまう。

    ある仕事上の必要性からMS SQLにて管理しているデータを Excel上に吐き出す必要が出てきました。 そのため、SQL Server Enterprise Managerを利用して 「全てのタスク→データのエクスポート」と指定していき、Microsoft Excelにデータのエクスポートを指定し、実行 したのですがSQLより65000行ほどデータをエクスポートした時点でエラーが起こり、中断してしまいます。 エクセルを見た所では65536行で中断しております。 これは、おそらくエクセルの行の限界であると思うのですが、SQLからエクセルにエクスポートを行う際に一定行以上 となったら新たにエクセルのシートを作成させたり新たな エクセルファイルにてエキスポートを行う事は可能でしょうか? もし、不可能である場合では大容量(100万行以上)の SQLデータベースを閲覧可能&プリント可能な状態で アウトプットを行う方法をご教授願えればと思います。 宜しくお願いいたします

  • 正規表現について2

    すみません、前回「正規表現について」でお世話になりました者です。 前回の分は解決したのですが、それに関連してもう少し教えてください。 data.txt---------------------------------------- aaabbbccc aaadddccc aaaeeeccc ------------------------------------------------ test.pl----------------------------------------- #!C:\Perl\bin\perl use CGI; my $q = CGI->new; $q->charset('Shift_JIS'); print $q->header(-type => "text/html"); my $line=0; open(IN,"<data.txt"); open(OUT,">output.txt"); while(<IN>){ if ($line++==0){ $output1="$1" if/aaa(.*?)ccc/;} s/aaa(.*)ccc/$1/ if (?aaa(.*)ccc?); print OUT; } close(OUT); close(IN); print $output1; ------------------------------------------------ とすることで、得られたい結果である、 output.txt-------------------------------------- bbb aaadddccc aaaeeeccc ------------------------------------------------ IEでの表示-------------------------------------- bbb ------------------------------------------------ となりました。そこで今回教えていただきたいのは、 data.txt---------------------------------------- <空行> aaabbbccc aaadddccc aaaeeeccc ------------------------------------------------ というようにdata.txtのはじめが空行の場合にも、 上記と同じような結果を得たいです。output.txtの はじめは空行になっても構いません。得られる文字として、上と同じ結果がほしいです。どうしたらよいでしょうか?よろしくお願いします。

    • ベストアンサー
    • Perl
  • perl初心者ですが、プログラム作成で行き詰ってしまいました。

    perl初心者ですが、プログラム作成で行き詰ってしまいました。 参考書を読みあさり、色々とググってみたのですが、どうしても組み立てられません。知識のある方ご回答よろしくお願いします。 一つ目は: 英語の文章を記憶したファイルを指定し,その内容を読み込み,文章内に含まれる単語を出現頻度の降順で表示させるプログラムを作成すること 「1位:・・・(・・回)」 「2位:・・・(・・回)」 ... なお,一つの単語が二行にまたがることはないものとする。 二つ目は: テストの成績データを記憶したCSV ファイルを指定し,その内容を読み込み,各学生の総合点と順位,各科目の最高点,最低点,平均点を記憶したCSVファイルを書き出すプログラムを作成せよ。 なお,入力用のファイルと出力用のファイルはキーボード入力で指定するものとする。 また,異なる学生数および科目数のCSV ファイルを読み込んでも正しく動作するようにすること。 卒業のかかったレポートで、この二つを完成させないと先に進めないのです。 本当に図々しい質問で大変申し訳ありません。知識のある方どうかご教授ねがいます。 *ひとつめに関しては: open (FILE, 'perl.txt') or die "$!"; while (my @array = <FILE>){ foreach (@array) { $count{ $_ }++ ; } @rank = sort { $count{ $b } <=> $count{ $a } } keys %count ; foreach (0..$#rank) { $kagi = $rank[ $_ ]; $kaisu = $count{ $kagi } ; print $_+1, "位:$kagi($kaisu 回)\n" ; } } のように書いたところで行き詰ってしまいました。 二つ目は: open (FILE, 'data.txt') chomp(@data = <FILE>) ; $i= 1 ; # 行番号を記憶する変数 for (@data) { # 各行に対して以下を繰り返す. # 各行の数値を配列の要素として記憶する. @list = split(/,/, $_) ; # サブルーチンを呼び出して,結果を表示 print "$i行目:" ; print "数値:",&cardinality(@list),"個," ; print "最大値:",&maximum(@list),"," ; print "最少値:",&minimum(@list),"," ; print "合計:",&summation(@list),"," ; print "平均:",&average(@list),"\n" ; # 行番号の更新 $i++ ; } とまで書き、もう何が何だか訳わからなくなってしまいました。

    • ベストアンサー
    • Perl
  • Select ~ into ~ で作成した一時テーブルにプライマリキー設定

    SQLServer2005 を使用し、ストアドプロシージャを作成しています。 select ~ into ~ で一時テーブルを作成、データ挿入するのですが、 この命令で作成された一時テーブルにプライマリキーを作成したいと 考えております。 目的は、挿入される件数が多くなりそうなので、 検索を速くする為です。 プライマリキーを作成するのは、 ALTER TABLE ~ CONSTRAINT PK_xxx PRIMARY KEY CLUSTERED ( ~ ) で作成できる事は、理解しております。 これらの処理をストアドプロシージャで行いたいのですが、 注意点としては、当ストアドプロシージャが 並行して実行される事を考慮しておかなくてはなりません。 以下のようなサンプルを作成し、テストしてみたのですが、 セション1でストアドプロシージャ実行後、 セション2でストアドプロシージャを実行してみたのですが、 以下のエラーメッセージが表示されてしまいます。 ここで質問ですが、 制約名をどのようにすれば実現できるのでしょうか。 たとえば、制約名を省略すれば、システム内で一意な名称を 命名してくれるような書き方はないのでしょうか。 ご存じの方、ご回答宜しくお願いします。 -- サンプルストアドプロシージャ create procedure proc_test as select getdate() AS sysdate into #worktable alter table #worktable with nocheck add constraint pk_xxx primary key clustered ([sysdate]) waitfor time '23:59' -- テストの為待機 -- セション1ストアドプロシージャ実行 exec proc_test -- セション2ストアドプロシージャ実行 exec proc_test -- セション2の実行結果 (1 行処理されました) メッセージ 2714、レベル 16、状態 4、プロシージャ proc_test、行 6 データベースに 'pk_xxx' という名前のオブジェクトが既に存在します。 メッセージ 1750、レベル 16、状態 0、プロシージャ proc_test、行 6 制約を作成できませんでした。以前のエラーを調べてください。

  • JavaScript thisとvarの違い

    以下のスクリプトをRhino 1.7 で実行しました。 var a = 1; this.a = 2; function MyFunc() { var a = 3; this.a = 4; print(a); } var func = new MyFunc(); print(a); print(this.a); print(func.a); 結果は以下の通りです。 3 2 2 4 1行目と4行目の結果が違います。 トップレベル(2と3行目)ではthisとvarの値が同じなのに1と4行目の値が違うのは、どのような理由でしょうか? JavaScriptの動作から含めて、教えていただければ幸いです。 よろしくお願いします。

  • Tiny Basic。。。。

    今、やってるプログラムで躓いてしまっているのでどうか助けてください>< 今、ファイルの書き込みのプログラムでフロッピーディスクに書き込みをするプログラムをつくってて。。 前につくったのはフロッピーにjyoho01.txtのファイルを書き込むっていうのを作って 'Example-F2. 'データファイルの書き込み Cls Print "フロッピディスクにデータを書き込みます。" Print "FDを挿入して下さい。" Print "準備ができたら、";chr$(&h22);"y";chr$(&h22);"と入力してください。" ans$="" While not (ans$="y" or ans$="Y") ans$=inkey$ Wend Open "A:\jyoho01.txt" for output as #1 For i=1 to 10 Print #1,i Next i Close print "書き込みが終了しました。" End っていうのを作ったんです。これはちゃんとできたんです。 つまづいてるのが フロッピーディスク内にあるX線回折結果のデータファイル(xrd01.csv)のデータ数を1/5に縮減して、新しいファイル(xrd02.csv)を作成するプログラムを作成せよ。 っていうのなんです。 とりあえず、このX線回折結果っていうのがエクセルで 15  133.333 15.02  170 15.04  170 15.06  143.333 15.08  146.667 15.1  170 15.12  173.333 15.14  200 15.16  156.667 15.18  190 15.2  180 っていうデータがあって80までの値があるんです。 先生から聞いたところ5分の一にしろというのは15と15.1の間の数値を飛ばして15 15.1といったふうにファイルの書き込みを指示すれば14行くらいで出来るって言われて自分でやってみたんですが。。 'Example-F2. 'データファイルの書き込み Cls Print "フロッピディスクにデータを書き込みます。" Print "FDを挿入して下さい。" Print "準備ができたら、";chr$(&h22);"y";chr$(&h22);"と入力してください。" ans$="" While not (ans$="y" or ans$="Y") ans$=inkey$ Wend Open "A:\xrd02.csv" for output as #1 For i=15 to 80 step 0.1 Print #1,i Next i Close print "書き込みが終了しました。" End で実行したところ左の15 15.1っていうのはできるんですが右の値を出すことができません。 どうやったらいいんでしょう。。 長くてすみません(泣

  • リストを分解してのSQLデータ抽出方法

    ド初心者です。カテ違いだったらごめんなさい。 あるデータを抽出したいのですが全く検討つかずで困っています。 SQLの組み立て方(?)をご教授頂けないでしょうか? fruits    order ----------    -------------------------- apple    orange, apple orange    orange, apple, grapefruit grapefruit   grapefruit grapefruit   orange, grapefruit, apple orange   apple, orange ▼▼ 上記のテーブルを使用して以下のような抽出結果を出したいです ▼▼ fruits  rank1  rank2  rank3 ----------  -----  -----   ----- apple   1   2    1 orange   3   1    0 grapefruit  2   1    1 appleがorderカラムで1番目に入っている行は何行あるかをrank1に appleがorderカラムで2番目に入っている行は何行あるかをrank2に appleがorderカラムで3番めに入っている行は何行あるかをrank3に orangeがorderカラムで1番目に入っている行は何行あるかをrank1に orangeがorderカラムで2番目に入っている行は何行あるかをrank2に つづく ・ ・ というように出したいです。何か良い方法はないでしょうか。 ちなみにBig QueryのstandardSQLを使用しています。 よろしくお願い致します。