SAS - неверные числовые данные при поиске в массиве

1) почему вы используете указатели на класс string? 2) вы не должны использовать sizeof со строкой, он возвращает размер объекта, а не размер строки.

вы должны попробовать:

string text = "Text";
outfile.write(text.c_str(), text.size());

или

outfile<<text;
0
задан krushna ratnaparkhi 27 February 2019 в 09:32
поделиться

1 ответ

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

Один из самых ясных способов шага DATA - это использовать то, что мы называем циклом DOW, в котором SET находится внутри цикла. Этот пример кода предполагает не более 10 уникальных спутниковых значений на группу. (by переменные можно рассматривать как ключевые переменные, а все остальные переменные будут спутники )

data have; 
  input user_id screen_id ;
datalines;
1 1
1 2
1 1
1 1 
1 1 
1 3
2 1
2 1
2 1
3 0
4 1
4 2
4 3
5 11
5 11
5 11
5 5
5 1
5 5
5 6
5 1
run;

data want;
  _index = 0;
  do until (last.user_id);
    set have;
    by user_id;

    array ids screen_id1-screen_id10;

    if screen_id not in ids then do;
      _index + 1;
      ids(_index) = screen_id;      
    end;    
  end;

  drop _index screen_id;
run;

Одним из самых ясных процедурных способов является выбрать уникальные значения и транспонировать их.

proc sql;
  create view uniqueScreenByUser as
  select distinct user_id, screen_id
  from have
  order by user_id
  ;

proc transpose data=uniqueScreenByUser prefix=screen_id out=wantWide(drop=_name_);
  by user_id;
  var screen_id;
run;
0
ответ дан Richard 27 February 2019 в 09:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: