Как использовать prxmatch или альтернативу для строки ниже в sas - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть несколько строк строк

Eg 1.
Our commission is 25% for next order
Eg2.
20% is applied for previous order

Я хочу удалить и создать новый столбец с 25% и 20% и т. Д. Сверху строка.

Как я могусделать это в SAS? Новый столбец должен течь 25%, т.е. в процентах.

ColA.                                     ColB
Our commission is 25% for next order.     25%
20% is applied for previous order.        20%
.
.
.

Так далее ....

1 Ответ

1 голос
/ 30 сентября 2019

Одно процентное значение (или ни одного) можно извлечь из строки, используя шаблон с выражением группировки (<something>), prxmatch и prxposn, чтобы извлечь символы, соответствующие сгруппированному выражению.

Пример:

Предполагается, что процент представляет собой целое число, за которым сразу следует знак процента.

Сохраните процент в виде дроби (предположительно в диапазоне от 0 до 1), значение которой равноотформатирован для отображения в процентах.

data have;
  input;
  line = _infile_;
datalines;
Eg 1.
Our commission is 25% for next order
Eg2.
20% is applied for previous order
run;

data want;
  set have;

  /* pattern for finding and capturing a whole number that is followed by a percent sign */
  rx = prxparse('/(\d+)%/');

  if prxmatch(rx,line) then do;
    matched_digits = prxposn(rx, 1, line);
    fraction = input(matched_digits, 12.) / 100;
  end;

  format fraction percent5.;
run;
...