2017-04-24 4 views
-1
に私の文字列から最初の名前最後の名前と年齢を区切るしたい

入力:年齢すなわちデビッド年齢は30、つまり番号が含まれている必要があります前に、名前の変数が文字が含まれている必要があり私はSAS

David30Miller 
Jhonty45Rhodes 
Ahsley63Cummins 

第1、姓はミラーを含む必要があります。

必要な出力:

FirstName Age Last name 
David  30 Miller 
Jhonty 45 Rhodes 
Ahsley 63 Cummins 

誰かが助けることができますか?

+1

の場合に知らせて?今のところ、これは良い質問のようには見えません。特に、少数の研究でさえ、少なくともいくつかの可能性を考え出すことができます。 – Joe

答えて

2

ステップ1:のパラメータとして年齢を使用して湿布(文字列,,「KD」)(KDは、年齢で私たちを残して、すべての文字値を圧縮している)
ステップ2を使用して抽出年齢
をスキャンして、姓と名義を作成する機能。 scan(,,):最初のパラメータは作業したい値で、2番目のパラメータは抽出する文字列の部分で、3番目のパラメータはこの場合の識別(年齢)に使用されます。

data abc; 
input string $50.; 
cards; 
David30Miller 
Jhonty45Rhodes 
Ahsley63Cummins 
; 
run; 

data abc; 
set abc; 
age = input(compress(string,,"kd"),best.); 
first_name =scan(string,1,age); /*or scan(string,1,,"d");*/ 
last_name = scan(string,2,age); /*or scan(string,2,,"d");*/ 
run; 

マイ出力:

|string    |age |first_name |last_name 
|David30Miller  |30  |David  |Miller 
|Jhonty45Rhodes  |45  |Jhonty  |Rhodes 
|Ahsley63Cummins |63  |Ahsley  |Cummins 

私はあなたが何をしようとしている任意のクエリ

+1

Stack Overflowでの良い答えはコードオンリーではありません。 – Joe

+0

あなたを助けようとしている人の正解にあなたが投票したと信じられません。あなたが30秒以上待つことができたら、私は答えを説明していた。とにかく、コードの一部を理解できない場合は、私に知らせてください。常に喜んで助けてください。 –

+0

DVは私でした、OPではありませんでした。そしてこれはもう少し良いと思いますが、[faq]と[answer]をお読みください。これは依然として貧しい質問をした人にコードを与えているだけです。私はまた、スキャン機能で年齢を使用する理由はないことを示唆しています。それは不必要なnum-char変換を引き起こすので、設計が貧弱です。代わりに '' d '番目の引数を使用してください。 – Joe