2016-11-14 3 views
-2

データセットの行の合計が必要です。特に、私は2番目の要素から最後の要素まで合計したいと思います(最初の項目をスキップします)。データセットの行全体をどのように合計することができますか?

どうすればこの問題を解決できますか?

+3

何を試しましたか?あなたのデータはどうですか?これは初心者の方でも数多くのSASのやり方ですから、a)それを解決するための努力をしていること、b)実行中の問題があり、私たちのソリューションが最高になることを知る必要があるお客様のニーズに合わせてカスタマイズされています。 – Joe

+0

データは完全に整数ですが、最初の列は整数のID番号です。私は合計でそれを含めることはできません。私が今までに持っていたソリューションは、procデータを使用し、行を個別に合計することによって新しい列を作成するだけです。私は時間が経つにつれて使用されるスクリプトを書いているので、列の数は使用から使用に変わることがあります。このため、procデータソリューションは適切ではありません。 –

+1

'proc data'とは何ですか?詳細が必要です。例と試したこと。今までの難しさを説明していないので、最初のSASプログラマがこれを解決するのを止めるべきです。なぜ、これが質問であるのかという疑問を置く必要があります。データ例あなたが望むものの例。コメントではなく、質問に。 「最初のエントリー」と「行の向こう」の意味はまだ分かりません。 – Joe

答えて

0

最初の列を除いてすべてを追加するように思えます。あなたはまた、あなたが持っている変数の数が分からず、時間とともに多くの変数が変化します。

スマートな方法がありますが、ここには3つのオプションがあります。

他のすべては数ある間、あなたのID値がテキストとして保存されている場合、言うことは簡単です:

data sum; 
    set test; 
    sum = sum(of _numeric_); 
run; 

を単純にすべての数値型変数を追加しますました。しかし、あなたは整数IDを持っているように聞こえるので、おそらくこれらのオプションの1つが機能します。まず、いくつかのサンプルデータ: - :

data test2; 
    set test; 
    sum=sum(of _numeric_)-id; 
run; 

data test; 
    input id var1 var2 var3; 
cards; 
1 2 2 2 
2 3 3 3 
3 4 4 4 
4 5 5 5 
; 
run; 

オプション1単純に数値変数のすべてを追加し、あなたのID値を引くが、これはID以外のすべての合計が残ります

オプション2 - SASに、データセットにリストされている順序で変数の範囲を操作するよう指示できます。 sum = sum(var1--var3);を実行してもかまいませんが、最初と最後の変数が何であるかわからないことがあります。 ID変数がどこかの中間にある可能性もあります。

これに対する解決策は、あなたのID変数が最初であることを確認し、その後、あなたは合計する変数の範囲の前後にダミー変数を作成するには、次のようになります。

data test3; 
    format id START_SUM; 
    set test; 
    END_SUM = .; 
    sum = sum(of START_SUM--END_SUM); 
    drop START_SUM END_SUM; 
run; 

これは、設定する前に、IDとSTART_SUMを作成しますデータを作成し、データの最後に空のEND_SUMを作成します。 START_SUMからEND_SUMまでのすべてを合計し、sum(of ...)が欠損値をスキップするため、実際に気にかけている変数の合計だけが得られます。次に、不要になったダミー変数を削除します。

オプション1は明らかに簡単ですが、オプション2は、数値IDと非数値IDの両方で機能するという利点があります。オプションを追加したり引いたりすると、奇妙な丸めの問題が発生する可能性はありません。 ID(すべてが整数の場合は発生しませんが)。

関連する問題