2016-12-23 7 views
-1
Id jan feb mar apr may jun jul 
A 1 . .  1 1 . . 
B . . 1  . . . . 
A . 1 . . . . . 
C . . .  1 . . . 

値が見つからない開始月がわかりたいと思います。 Aのためにそれはjanです、Bのためにそれはmar ansそうです。IDに基づいて開始月を取得する方法

+0

あなたはSOの規則に従ってあなたの質問に試してみたものを記載してください。 – Reeza

答えて

1

私はあなたの疑問に答えていませんでした。それは、最初の欠損していない値を見つけるために別の関数が合体することを必要とします。

data id; 
    input Id:$1. jan feb mar apr may jun jul; 
    array a[*] jan-numeric-jul; 
    target = coalesce(of a[*]); 
    l=whichn(target,of a[*]); 
    if l gt 0 then month = vname(a[l]); 
    cards; 
A 1 . .  1 1 . . 
B . . 99  . . . . 
A . 223 . . . . . 
C . . .  -11 . . . 
;;;; 
    run; 
proc print; 
    run; 

ARRAYと2つの機能が必要です。

data id; 
    input Id:$1. jan feb mar apr may jun jul; 
    array a[*] jan-numeric-jul; 
    month = vname(a[whichn(1,of a[*])]); 
    cards; 
A 1 . .  1 1 . . 
B . . 1  . . . . 
A . 1 . . . . . 
C . . .  1 . . . 
;;;; 
    run; 

enter image description here

+0

このような素晴らしいソリューションをありがとう。 – Anonamous

+0

私は28ヶ月を持っていますが、上記のコードを使用していて、 "array subscript from range"というエラーが表示されていますか? – Anonamous

+0

@Anonamousあなたはあなたの仕事を示す必要があります。 –

関連する問題