Решение шага данных SAS может быть следующим:
/* set up data */
data have;
infile datalines truncover;
input activity_name : 8.
status_change_dttm : datetime20.
;
format status_change_dttm datetime20.;
datalines;
1
1
1 18FEB2019:19:16:13
2
3
3
3
4
5 03FEB2019:14:38:52
5 04FEB2019:18:30:52
5 14FEB2019:12:00:12
15
15 04FEB2019:18:30:52
15 14FEB2019:12:00:12
;
/* process and output */
data want;
null_count = 0;
group_count = 0;
/* count number of records and nulls for this activity_name group */
do until(last.activity_name);
set have;
by activity_name;
group_count + 1;
if missing(status_change_dttm) then
null_count + 1;
end;
/* output data for the same activity_name group */
do until(last.activity_name);
set have;
by activity_name;
if null_count = 0 then
output;
else
if null_count eq group_count then
do;
output;
/* prevent any more null records being output */
null_count + 1;
end;
else
if null_count lt group_count and not missing(status_change_dttm) then
output;
end;
run;
По соображениям эффективности OpenGL ES - лучший выбор для игр, если только вы не пишете «простую» настольную или карточную игру. (как пасьянс). В этом случае Core Animation подойдет.
Вам стоит проверить cocos2d-iphone, если вы собираетесь делать 2d игру. Это кажется довольно прочной основой. Он поставляется с физическим движком бурундука и все готово к работе.
Я думаю, OpenGL - ваш лучший выбор, я не могу согласиться с тем, что Quartz проще в использовании.
Также, если вы добьетесь успеха, большая часть вашего кода будет переносима на другие платформы. Что-то рассмотреть.
В основном все зависит от того, нужно вам 3D или нет. Если ваша игра полностью двумерна, то использовать Quartz для рисования, вероятно, проще. Не то чтобы OpenGL был настолько сложен, но он более сложен, чем интерфейс Quartz.
Рисование и наложение кварца будет ускоряться OpenGL, когда это возможно, поэтому не должно быть большой разницы в производительности, если вы строго делаете 2D-рисование.