2014-10-10 4 views
0

У меня есть один набор данных, как это:расчетные значения с использованием SAS

a b c 
1 2 3 
4 5 6 
5 8 9 
9 11 12 

, так что я хочу сделать ограничение для данных.

Например:

a(2) - b(1) >=1 and a(2) -c(1) >=1 
    a(3) - b(2) >=1 and a(3) -c(2) >=1 

a(2) означает вторую строку для переменной a и т.д.

Как написать код для этого ограничения в SAS?

a(2) - b(1) >=1 and a(2) -c(1) >=1

Ожидаемый результат:

a b c 
1 2 3 
4 5 6 
+0

Что вы хотите, чтобы вывод выглядеть? Посмотрите на функцию задержки в противном случае. – Reeza

+0

@Reese Я хочу написать функцию типа (2) - b (1)> = 1 и a (2) -c (1)> = 1, чтобы ограничить этот набор данных, поэтому, если a (2) - b (1)> = 1 и a (2) -c (1)> = 1, значение сохранится – user3849475

+0

Какое значение вы сохраните, первую или вторую строку. SAS не обрабатывает данные так, как обычно это делают другие языки, если вы не перейдете в IML. Публикация того, что вы ожидаете от вывода, поможет ответить на ваш вопрос. – Reeza

ответ

0
data have; 
input a b c; 
cards; 
1 2 3 
4 5 6 
5 8 9 
9 11 12 
; 
run; 

data want; 
    set have; 
    diffab=a-lag(b); 
    diffac=a-lag(c); 

    if (diffab<1 or diffac<1) and _n_>2 then delete; 
run; 
+0

Спасибо @Reese, что работает. – user3849475

Смежные вопросы