Data Science/SAS

[SAS BASE] CramBible Q#13 문제풀이 infile | dlm = ',' | input

오기오기 2024. 9. 28. 19:00
728x90
반응형

 

QUESTION NO: 13

Given the following raw data record:

----I----10---I----20---I----30
son, Travis

 

The following output is desired:

Obs relation firstname
1   son      Travis

 

Which SAS program correctly reads in the raw data?

A. data family (dIm = ','); infile 'tile specification'; input relation $ firstname $; run;


B. optionsdIm = ','; data family; infile 'file specification'; input relation $ firstname $; run;

 

C. data family;infile 'file specification' dIm = ','; input relation $ firstname $; run;


D. data family;infile 'file specification'; input relation $ firstname $ / dim = ','; run;

 

 


 

 

  • 변수 relation에는 "son"이, firstname에는 "Travis"가 들어가야 합니다.
  • 쉼표를 기준으로 데이터를 나누어야 하는 상황입니다.

 

SAS에서 쉼표 구분자 사용 방법:

  • DLM= 옵션을 사용하여 데이터 구분자를 지정할 수 있습니다. 여기서는 쉼표(,)로 데이터를 나누고 있으므로, dlm=','와 같이 지정해야 합니다.

 

그렇기에 정답은 C가 됩니다 

 

각 선택지 분석:

선택지 A:

data family (dlm = ',');
infile 'file specification';
input relation $ firstname $;
run;

 

 

  • data family (dlm = ','): 이 부분에서 dlm=을 사용하고 있지만, data 스텝에서 dlm 옵션은 사용할 수 없습니다. dlm 옵션은 infile 문에서 사용되어야 합니다.
  • 따라서, 이 선택지는 오답입니다.

 

선택지 B:

options dlm = ',';
data family;
infile 'file specification';
input relation $ firstname $;
run;

 

 

  • options dlm = ',';: options 스텝에서 dlm을 지정하는 것은 올바르지 않습니다. 데이터 구분자를 설정하는 것은 infile 스텝에서 이루어져야 합니다.
  • 따라서, 이 선택지도 오답입니다.

 

선택지 C:

data family;
infile 'file specification' dlm = ',';
input relation $ firstname $;
run;

 

 

  • infile 'file specification' dlm = ',';: 여기서 infile 스텝에서 dlm=',' 옵션을 사용하여 데이터를 쉼표(,)로 구분하여 읽어들이도록 지정하고 있습니다.
  • input relation $ firstname $;: 이 부분은 쉼표로 구분된 두 개의 문자열(relation과 firstname)을 읽어들일 수 있도록 제대로 설정되어 있습니다.

 

선택지 D:

data family;
infile 'file specification';
input relation $ firstname $ / dlm = ',';
run;

 

  • input relation $ firstname $ / dlm = ',';: 이 구문에서 **/ dlm = ','**는 잘못된 구문입니다. dlm 옵션은 infile 문에서 사용해야 합니다.
  • 따라서, 이 선택지도 오답입니다.

 


 

infile 문과 dlm 옵션:

 

 

 

  • infile 문은 외부 파일에서 데이터를 읽어오는 역할을 합니다.
  • dlm= 옵션은 **데이터 구분자(delimiter)**를 지정하는 데 사용됩니다. 예를 들어, 데이터가 쉼표, 탭, 공백 등으로 구분될 경우, dlm 옵션을 통해 구분자를 명시해야 합니다.
  • 예: infile 'filename' dlm = ',';는 쉼표로 데이터를 구분하도록 지시합니다.

 

input 문:

  • input 문은 데이터를 읽어와서 SAS 변수에 저장하는 역할을 합니다.
  • $ 기호는 해당 변수가 문자형 변수임을 나타냅니다.
  • 예: input relation $ firstname $;는 두 개의 문자형 변수를 읽어들입니다.

데이터 구분:

  • 고정된 폭의 데이터가 아닌 구분자 기반 데이터를 다룰 때, dlm= 옵션을 사용하여 원하는 구분자로 데이터를 읽어올 수 있습니다. 
  • 특히 쉼표(,), 탭(\t), 공백 등으로 데이터를 구분할 때 유용합니다.

 

 

 

 

728x90
반응형