2012-12-17 4 views
0

할 수 있습니까? 수 I는 SAS에서 파일을로드하는 방법SAS로드 파일 txt

anne, sex, nat, age, prov, tai, pds, ptr, pbi, pss, psi, pmo, dyn, efl, fp, 
slo, cna, flt, rsa, sbf, ll. 

하고 : 처음 세 개의 라인에서 동일한 ID를 분석하고 분석 된 변수는 하였다

1 1 8 2 004 149 44.9 Brabant 
14 7 7 9 9 
32 10 13.5 165 20 7 21 19.9 7 
1 1 9 2 004 133 32.5 Liege 
12 7 6 11 8 
14 18 20.9 140 22.9 18 15 4.4 5 

:

난 TXT 파일을 행과 열의 이름을 알려주시겠습니까?

정말 많이 생각하고 죄송합니다. elisa

+0

데이터 STAT2012.data2004; infile 'C : \ Users \ acer \ STAT2012 \ data2004.txt'; input annee 1-4 –

답변

1

입력 파일에 하나의 관찰을 위해 세 줄의 데이터가있는 것 같습니다. 내가 생각한대로 원래의 질문을 다시 형식화했다.

사실이 경우 INPUT 문에서 세 줄을 모두 읽고, / 연산자를 사용하여 다음 줄로 건너 뛰면됩니다. 다시 말해서 다음을 시도하십시오 :

data STAT2012.data2004; 
    infile 'C:\Users\acer\STAT2012\data2004.txt'; 
    input ID 
      anne sex nat $ age prov tai pds $ 
     /ptr pbi pss psi pmo 
     /dyn efl fp slo cna flt rsa sbf ll; 
run; 

물론 변수 이름이 파일과 일치하고 결과가 필요한지 확인해야합니다. 나는 당신에게 아주 기본적인 예를 보여주었습니다.

업데이트 : 예제는 게시 한 샘플 데이터를 기반으로 한 것입니다. 첫 번째 열은 ID 변수라고 가정했는데, 그렇지 않으면 예제 데이터의 값이 예제보다 많았 기 때문입니다.

가장 좋은 방법은 INFORMAT 문을 사용하여 각 변수를 읽는 방법을 정의하는 것입니다. 이를 위해서는 각 변수의 유형 (문자 또는 숫자)과 각 문자 변수의 최대 길이를 이해해야합니다. 숫자 변수의 경우 정보 입력란 best32. 만 사용할 수 있습니다. 문자 변수의 최대 길이를 모르는 경우 $200.을 사용해보십시오. 그러면 각 변수의 길이는 200 자입니다. 예를 들어

: 당신이 당신의 INFILE 문에 DLM 옵션이 필요하지 않습니다

data STAT2012.data2004; 
    infile 'C:\Users\acer\STAT2012\data2004.txt'; 

    /* Define the variables that will be read */ 
    informat 
    /* First line, 8 variables */ 
      anne best32. 
      sex $1. 
      nat $4. 
      age best32. 
      prov best32. 
      tai best32. 
      pds best32. 
      ptr $200. /* 8th field in your sample, apparently character */ 

    /* Second line, 5 variables */ 
      pbi best32. 
      pss best32. 
      psi best32. 
      pmo best32. 
      dyn best32. 

    /* Third line, 9 variables */ 
      efl best32. 
      fp best32. 
      slo best32. 
      cna best32. 
      flt best32. 
      rsa best32. 
      sbf best32. 
      ll best32. 
     unkn best32.; /* an unknown variable I invented */ 

    /* Input the variables in the order they appear in the file.*/ 
    input anne sex nat age prov tai pds pdr 
     /pbi pss psi pmo dyn 
     /efl fp slo cna flt rsa sbf ll unkn; 
run; 

참고. 또한이 예제는 제공 한 샘플 데이터의 모든 데이터를 읽지는 않습니다. 나는 새로운 변수를 발명했다.

기억해야 할 중요한 점은 소스 파일에 나타나는대로 올바른 순서로 변수를 읽는 것입니다.

+0

고맙습니다. 이 코드를 사용했지만 지방 (군주제 ..)의 길이가 다르고로드 할 수 없습니다. 어떻게 할 수 있습니까? 덕분에 죄송합니다. ! –

0
data STAT2012.data2004; 
    infile 'C:\Users\acer\STAT2012\data2004.txt' dlm=' '; 
    input 
      anne 1-4 sex $6 nat $8 age 10 prov @$11-21 tai @23 pds @25 
     /ptr 1-2 pbi 4 pss 6 psi 8 pmo 10 
     /dyn 1-2 efl 4-5 fp 7-10 slo 12-14 cna 16-17 flt 19 rsa 21-22 sbf 24-27 ll 29; 
run; 
+0

입력 지시문에 열 지시문이나 정보를 사용하지 말고 파일에 표시된 순서대로 변수를 나열하십시오.나는 나의 대답을 더 자세하게 업데이트 할 것이다. – BellevueBob

0

내가 겪을 수있는 문제는 위치 이름에있는 단어 이상인 것 같습니다. 다음과 같은 방법으로이를 극복 할 수 있습니다 (가장 긴 이름을 200 자 미만으로 가정).

data data2004; 
    infile 'C:\Users\acer\STAT2012\data2004.txt' truncover; 
    input ID 
    anne sex nat $ age prov tai pds $200.; 
    input ptr pbi pss psi pmo ; 
    input dyn efl fp slo cna flt rsa sbf ll; 
run;