Функция SAS COUNTW — как подсчитать слово, включающее нулевое значение, при использовании настраиваемого разделителя?

#sas #sas-macro

#sas #sas-макрос

Вопрос:

Пытаюсь использовать функцию COUNTW , чтобы получить количество «слов» в строке. Но иногда эта строка может содержать нулевое значение, если она разделена запятой;

Я нашел несколько пользовательских макросов, которые могут это делать, просто интересно, смогу ли я добиться того же с помощью встроенной функции, COUNTW например.

Например:

%put %wordcount('abc, , ,def,,56j,type',DLM=%str(,));

Приведенная выше пользовательская функция возвращает 7

%put %sysfunc(countw('abc, , ,def,,56j,type',%str(,)));

COUNTW возвращает 6, поскольку не учитывает значение NULL между двумя запятыми («,,»)

Ответ №1:

Очень просто, просто посмотрите онлайн-документацию! COUNTW имеет необязательные модификаторы, один из которых M который указывает функции включать последовательные разделители в виде слова, а не null.

Следующий код возвращает 7, а не 6.

 %put %sysfunc(countw('abc, , ,def,,56j,type',%str(,),M));
  

Комментарии:

1. Спасибо! Должно быть, я пропустил это при проверке документации! Я продолжал искать значение NULL или ОТСУТСТВУЕТ при просмотре страницы. Извините, что спрашиваю об этом, когда это так ясно написано на странице документации!