SAS: данные не существуют, даже если они жесткие

#file-upload #import #sas

#загрузка файла #импорт #sas

Вопрос:

Я новичок в среде SAS. Может быть, это глупый вопрос, но я не могу его понять.

 LIBNAME CODY '/folders/myfolders/Cody';

data In_Both
Missing_Name(drop = Name); 
merge purchase(in=In_Purch) 
inventory(in=In_Invent);
by Model;
if In_Purch and In_Invent then output In_Both; 
else if In_Invent and not In_Purch then output Missing_Name;
run;
  

Это ошибка, которую я получаю

  1          OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
 72         
 73         LIBNAME CODY '/folders/myfolders/Cody';
 NOTE: Libref CODY was successfully assigned as follows: 
       Engine:        V9 
       Physical Name: /folders/myfolders/Cody
 74         
 75         data In_Both
 76         Missing_Name(drop = Name);
 77         merge purchase(in=In_Purch)
 78         inventory(in=In_Invent);
 ERROR: File WORK.PURCHASE.DATA does not exist.
 ERROR: File WORK.INVENTORY.DATA does not exist.
 79         by Model;
 80         if In_Purch and In_Invent then output In_Both;
 81         else if In_Invent and not In_Purch then output Missing_Name;
 82         run;
  

Кажется, что SAS не может найти файлы, даже если они существуют.
Я использую SAS university Edition.
Код должен предоставить мне 2 набора данных, один с объединенным наблюдением, а другой с не объединенными наблюдениями.

Есть ли конкретный способ загрузить нужные мне наборы данных? Два набора данных представлены в формате sas7bdat

Спасибо всем за помощь!

Ответ №1:

Измените оператор merge в своем коде на

 merge 
  CODY.purchase(in=In_Purch) 
  CODY.inventory(in=In_Invent)
;
  

Журнал сообщает вам, что этот шаг ищет таблицы в WORK библиотеке, а не CODY

Давайте посмотрим на исходный код.

 data In_Both Missing_Name(drop = Name); 
  merge 
    purchase(in=In_Purch) 
    inventory(in=In_Invent)
  ;
  by Model;
  if In_Purch and In_Invent then output In_Both; 
  else 
  if In_Invent and not In_Purch then output Missing_Name;
run;
  

Имена наборов данных purchase и inventory в merge не включают a <libref>. . Когда libref отсутствует, SAS по умолчанию WORK использует папку.

Сообщения об ошибках в журнале четко указывают на проблему

 ERROR: File WORK.PURCHASE.DATA does not exist.
ERROR: File WORK.INVENTORY.DATA does not exist.
  

Вы можете видеть, что шаг искал WORK.PURCHASE WORK.INVENTORY и не нашел их (потому что они есть в CODY библиотеке)

Измените объединяемые наборы данных, чтобы включить соответствующую библиотеку, таким образом, вы хотите CODY.purchase и CODY.inventory

Комментарии:

1. Как мне сказать SAS, чтобы он смотрел в папке Cody вместо работы? Извините, я не получил полного ответа

2. Измените имя набора данных с просто PURCHASE (что подразумевает WORK.PURCHASE ) на CODY.PURCHASE

3. Спасибо, теперь я понял!