2014-11-07 3 views
-2

만약 내가 하나의 데이터 집합을 내가 필드 이름과 긴 예 : 코드 예 : 데이터를 가지고 관련된 조회와 다른 데이터 집합을 사용하여 구문 분석하려는 라인을 가지고 (1 열) : sas vlookup 다른 데이터 집합에서 동일한 줄에

r14$1r15$Joer16$Geography 
r14$2r15$Susanr16$Math 
r14$3r15$Jonathanr16$Chemistry 


데이터 VLOOKUP VLOOKUP 다른 데이터 세트에서

:
cod name   long 
r14$ N    1 
r15$ name_Alumn  4 
r16$ class   5 

내가 필드 이름 및 SUBSTR (& 이름, 1과 같은 SUBSTR를 얻을 수 VLOOKUP 사용하여이 결과를 원하는, & 긴), 예컨대 :

데이터 원치 (3 열) :

N name_Alum class 
1 Joe  Geogr 
2 Susa  Math 
3 Jona  Chemi 
+0

'vlookup'이라는 용어를 사용하여 두 개의 데이터 세트를 결합하거나 다른 값을 찾으려면 값을 매치하는 경우 다른 용어를 사용하십시오. 'vlookup '은 특별히 Excel 함수를 말하며 다른 의미 나 사용법이 없습니다. – Joe

답변

0

난 당신이, 당신은 NAME "VLOOKUP"에 의해 데이터 집합을 전화하는거야 뭘 하려는지를 참조하십시오. Excel에서 해당 조회 기능을 사용하는 일부 사용자가 혼란스러워하는 이유가 있습니다.

오케이, SAS : 이 작업은 SAS 입력 명령문 (또는 PROC IMPORT, 그 문제에 대한)이 각 행에서 동일한 순서로 필드를 기대하기 때문에 일반 SAS 읽기에서 프레임하기가 어렵습니다. 길이가 다른 경우. 이제 당신은 XML에 대해 더 많이 상기시켜줍니다.

첫 번째 질문 - 행의 변수가 순서가 맞지 않습니까? 즉, 다음과 같이 표시됩니다.

r14$1r15$Joer16$Geography 
r15$Susanr14$2r16$Math 
r16$Chemistryr14$3r15$Jonathan 

그렇지 않으면 구분 기호 문제로 다시 채우십시오. 달러 기호로 구분 된 데이터에 약간의 추가 작업이 있습니다. 당신이 준 예제를 가지고 : 당신이 $ -delimited를 호출 할 경우

r14$1r15$Joer16$Geography 
r14$2r15$Susanr16$Math 
r14$3r15$Jonathanr16$Chemistry 

후 SAS는로보고 :

r14 1r15 Joer16 Geography 
r14 2r15 Susanr16 Math 
r14 3r15 Jonathanr16 Chemistry 

첫 번째 필드가 단지 정크 - 대구의 첫 번째 부분. 마지막 필드는 완벽합니다. 다른 필드는 3 열의 정크가있는 좋은 정보입니다. 이것은 매우 표준화하고 쉽게 청소 할 수 있습니다 ( VAR1 = 1 *의 SUBSTR : 을 - : - 길이의 문자열, 적은 세 가지, 즉 걸릴 숫자 변수의 경우, 마지막 줄을

VARLEN = LEN(VAR0)-3; 
VAR1 = substr(VAR0,1,VARLEN); 

을 VAR0,1, VARLEN);

data mydata; 
infile "./mydatarows.txt" dsd delimiter = '$'; 
input junk obsnum0 name0 class0; 
obslen = LEN(obsnum0)-3; 
obsnum1 = 1*substr(obsnum0,1,obslen); 

name0 = LEN(name0) - 3; 
name1 = substr(name0,1,namelen); 

drop junk; 
run; 

또한 데이터 단계에서 형식 등을 정의해야하지만 이것은 당신에게 괜찮은 출발점을 제공한다 :

그래서 모두 마무리.

정말로 당신이 제안하는 것처럼 그것을 시도하고 싶다면 ... 내가 다시 돌아올 것입니다. 그것은 당신이해야 할 일보다 훨씬 힘든 방법입니다.