Извлечь второе вхождение строки в SAS - PullRequest
0 голосов
/ 10 марта 2020

У меня есть следующий текст с полями валюты и суммы.

Валюта транзакции - доллар США, сумма 200,00. Валюта транзакции - евро, сумма 150,00

. создайте четыре переменные tran1, amt1, tran2 и amt2 переменные

Tran1 amt1 Tran2 amt2
USD    200  EUR   150

Я использовал функции substr и find, но он принимает только первое вхождение.

 Tran1=substr(string,find(string,”transacrioncurrency”)+21,3);

 Amt1=substr(string,find(string,”the  amount is”)+12,5);

Ответы [ 2 ]

0 голосов
/ 11 марта 2020

Вот альтернативный подход с использованием input операторов, которые вы можете использовать, если ваш текст находится во внешнем файле:

data example;
input @'is '  tran1 $3. @;
input @'is '  amt1 :8. @;
input @'is '  tran2 $3. @;
input @'is '  amt2 8.;
datalines;
The transaction currency is USD and the amount is 200.00 The transaction currency is EUR and the amount is 150.00
;
run;
0 голосов
/ 10 марта 2020

Чтобы найти второе начало вхождения после позиции первого:

data f;
p="The transaction currency is USD and the amount is 200.00 The transaction currency is EUR and the amount is 150.00";
p1=find(p,"The transaction currency",1);
Tran1=substr(p,p1+28,3);
p2=find(p,"the amount is",1);
 Amt1=substr(p,p2+14,6);

 p3=find(p,"The transaction currency",p1+1);
Tran2=substr(p,p3+28,3);
p4=find(p,"the amount is",p2+1);
 Amt2=substr(p,p4+14,6);
;

run;

результат:

p                 p1    Tran1   p2  Amt1    p3  Tran2   p4  Amt2
The transacti..     1   USD     37  200.00  58  EUR     94  150.00
...