2012-04-06 2 views
0

Я использую оператор if для создания новой переменной, но не работает. Я проверил и не могу найти, где проблема.Проблема с кодировкой sas с оператором if

data sockeye; 
infile 'c:/sockeye.csv'; 
length data $8.; 
input data $ sockeye; 
if data='29-Jul' then sampweight =250/15; 
if data='30-Jul' then sampweight =250/15; 
run; 

data n_boats; 
length data$8.; 
data = '29-Jul';_total_=250;output; 
data = '30-Jul';_total_=250;output; 
run; 

proc surveymeans data=sockeye N=n_boats mean sum; 
strata data/list; 
var sockeye; 
weight sampweight; 
run; 
+1

Как выглядят красные и n_boats? после шагов данных –

+2

Каким образом ваш код работает не так, как ожидалось? Будьте более конкретны в этой проблеме. – itzy

+0

Вы должны изменить второе «если» на «else if», а затем добавить еще одну строку под ним, как это «else put _all_;», чтобы увидеть, сравнивает ли оно то, что вы ожидаете. – cmjohns

ответ

0

Для первой части вы пытаетесь прочитать CSV-файл. Это лучше сделать с мастером импорта, по моему опыту. Это особенно. true для дат, с которыми трудно справиться в SAS (и многих других программах).

Для переменных второй части с префиксом и суффиксом _ создаются SAS. Я не уверен, но я не думаю, что вы можете их изменить; Я бы рекомендовал против попытки.

В общем, я бы избегал иметь переменные с именами, такими как «данные», которые являются ключевым словом в SAS. Кроме того, это имя переменной неинформативно. Ясно, что это даты. Таким образом, имя переменной должно быть чем-то вроде dateXXX, где XXX указывает, что такое дата.

+3

Хотя SAS часто использует такие имена, как '_ _', никаких ограничений на использование этого соглашения для пользователей нет. Единственные, что мне известно о SAS, используемом на шаге данных (и, следовательно, его следует избегать), это '_ERROR_' и' _N_', а также списки автоматической переменной '_ALL_'' _CHARACTER_' и' _NUMERIC_'. – cmjohns