#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 или ОТСУТСТВУЕТ при просмотре страницы. Извините, что спрашиваю об этом, когда это так ясно написано на странице документации!