У меня есть набор данных с отметками времени и идентификаторами. Каждый идентификатор имеет несколько значений метки времени. Иногда время одно и то же, и в другое время они разные. Я сортирую данные по id, а затем по метке. И затем передаю его функции, если first.value. Затем я делаю proc freq, чтобы подсчитывать записи, и каждый раз, когда proc freq дает мне немного другое количество для некоторых идентификаторов. Общий общий счетчик не изменяется, но некоторые из значений сдвинуты, поэтому, например, для id подсчет равен a = 125 и id b = 130 Если я снова запустил код, значения будут id a = 126 и id b = 129. Общее количество очков остается неизменным, но значения незначительно меняются. Я сортирую по той же переменной, что и в функции first.value. Я также попробовал proc sort nodupkey и использовал equals и noequals в качестве опции. Есть ли другой способ сохранить только самую раннюю запись для каждого идентификатора? Спасибо.sas функция если first.value
proc sort data=a out=b ;
by id time ;
run;
data c;
set b;
IF FIRST.id;
BY id time;
run;
Можете ли вы разместить точный код, который вы использовали? Цель состоит в том, чтобы получить один рекорд на один идентификатор? – Tom
proc sort data = a out = b; по времени id; run; данные c; комплект b; IF FIRST.id; BY id time; run; – user601828
Плохой стиль, чтобы иметь инструкцию IF между операторами SET и BY, но, вероятно, это не повлияет на шаг данных. Если вы видите изменения в количестве различных идентификационных значений, это должно быть вызвано изменениями входных данных. – Tom