Присвоить 3 значения, чтобы одна запись стала тремя записями

#sas

#sas

Вопрос:

Я хочу создать простой набор данных слева, чтобы он стал набором данных справа. Для V1, 1,2,3 есть три значения. И я хочу присвоить это каждому из идентификаторов.

введите описание изображения здесь

Ответ №1:

Нет проблем. Сделайте это

 data have;
input id;
datalines;
1
2
;

data want;
   set have;
   do _N_ = 1 to 3;
      v1 = put(_N_, z2. -l);
      output;
   end;
run;
  

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

1. Обратите внимание, что в -L модификаторе спецификации формата нет необходимости. Не требуется удалять начальные пробелы, сгенерированные форматом Z.

2. Большое вам спасибо! Я не знал, что у меня может быть три параметра в функции PUT (). И я всегда использую $ 2. вместо z2., может быть, это вызвало разницу?

3. -L является частью спецификации формата, а не отдельным параметром функции. Формат $ 2 предназначен для символьных данных. Обычный формат 2. (или один из его псевдонимов, например, F2.) предназначен для числовых данных.

Ответ №2:

Попробуйте это

 data have;
input id;
datalines;
1
2
;

data want;
   set have;
   do v1 = 1 to 3;
      output;
   end;
run;
  

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

1. Большое вам спасибо!

2. Что, если я хочу, чтобы V1 был «00», «01», «02» вместо этого?

3. Вы хотите, чтобы V1 был символом? Просто напечатать числа ровно из двух цифр, которые включают начальный ноль при значениях меньше 10?