2014-12-17 2 views
-2

Это мои данные, позвольте мне называть это «время».SAS, как суммировать, даже если они отсутствуют?

VAR1    VAR2    VAR3    VAR4 
02NOV14:10:23:00 02NOV14:10:38:00 02NOV14:10:38:00 
02NOV14:12:52:00 02NOV14:13:05:00  
02NOV14:18:57:00 02NOV14:19:14:00 02NOV14:19:14:00 02NOV14:19:14:00 
03NOV14:10:13:00 03NOV14:10:13:00  
03NOV14:16:33:00 03NOV14:17:29:00 03NOV14:17:29:00 
03NOV14:12:35:00 03NOV14:12:40:00 03NOV14:12:40:00 
03NOV14:13:26:00 03NOV14:13:59:00 03NOV14:13:59:00 
03NOV14:14:34:00 03NOV14:14:41:00 03NOV14:14:41:00 
03NOV14:15:12:00 03NOV14:15:14:00 03NOV14:15:14:00 
03NOV14:15:48:00 03NOV14:16:18:00 03NOV14:16:18:00 
03NOV14:15:51:00 06NOV14:14:46:00 06NOV14:14:46:00  
07NOV14:11:35:00 07NOV14:12:15:00 07NOV14:12:15:00 
07NOV14:12:32:00 07NOV14:14:34:00 07NOV14:14:34:00 07NOV14:14:34:00 
07NOV14:12:18:00 07NOV14:12:19:00 07NOV14:12:19:00 07NOV14:12:19:00 
08NOV14:20:57:00 08NOV14:21:03:00 08NOV14:21:03:00 

и я хочу, чтобы создать новую переменную

VAR5 = VAR2 - VAR1; 
VAR6 = VAR3 - VAR1; 
VAR7 = VAR4 - VAR1; 

Я использую этот код

data time; 
set time; 
VAR5 = VAR2 - VAR1; 
VAR6 = VAR3 - VAR1; 
VAR7 = VAR4 - VAR1; 
run; 

и когда я печатаю, VAR6 и VAR7 пустуют. Я думаю, из-за недостающих значений в VAR 3 и VAR4 SAS не вычисляет VAR6 и VAR7. Как получить значения для них, когда у меня есть данные? Может кто-нибудь мне помочь?

раз в разы у меня есть значения для VAR3 и VAR4, а времена раз я не знаю. Поэтому я хочу иметь ценность для VAR 6 и VAR7, когда это возможно. например, для первого наблюдения у меня может быть VAR5 VAR6, но не VAR7, потому что нет никаких значений для второго наблюдения, у меня может быть только VAR5, для третьего я обычно получаю VAR5 VAR6 и VAR7.

+0

Ваш код ссылается на набор данных, называемый 'data', о котором вы ранее не говорили в вопросе. – mjsqu

+0

Я не вижу, почему var6 или var7 будут отсутствовать, если отсутствуют var3, var4 или var1. – mjsqu

+0

Какое значение вы хотите для var6/var7, когда var3/var4 отсутствует? – user667489

ответ

0

Обновленный код. Отсутствие функции гарантирует, что вычисления будут выполняться только тогда, когда аргументы не будут отсутствовать.

data time; 
set time; 
if not missing(var1) then do; 
if not missing(Var2) then VAR5 = VAR2 - VAR1; 
if not missing(Var3) then VAR6 = VAR3 - VAR1; 
if not missing(Var4) then VAR7 = VAR4 - VAR1; 
end; 
run; 
+0

Я не хочу ответа, когда нет значения. Я хочу получить ответ только тогда, когда у меня есть значения. – HPatrice

+0

BTW, если вы не хотите ответа, тогда ваш код должен сделать это, потому что, когда один из аргументов отсутствует, и когда вы будете использовать это в вычислениях, конечным результатом будет отсутствующее значение. Теперь я немного смущен тем, что вы ищете? – NEOmen

+2

Надеюсь, вы знаете, что в SAS недостающее числовое значение представлено знаком «.». (точка). Таким образом, вы не получите полный пробел. – NEOmen