<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />인사말,
오랫동안 SAS 프로그래머 였지만 JSL을 처음 접하는 사용자. 데이터 테이블이 있고 20 개의 열을 포함하는 그룹을 만들 수있었습니다. 다음 주에이 보고서를 실행하면 동일한 그룹에 25 개의 열이있을 수 있으며이 변수 목록을 사용하여 데이터 표를 조 변경하는 방법을 찾고 있습니다. JSL을 사용하면 개별 열 목록 대신 그룹 이름에서 작동하도록 아래 스크립트를 어떻게 수정합니까? 열 이름은 "HB_001 등"입니다.
데이터 테이블 ( "tran_HB") << 조바꿈
열 (
: HB_001,
: HB_002,
: HB_003,
: HB_004,
: HB_005,
: HB_006,
: HB_007,
: HB_008,
: HB_010,
: HB_012
),
작성자 (: 가족, : 그룹),
레이블 (: 레이블),
출력 테이블 ( "sum_HB_w_0")
);
고마워, 마이크
****편집하다:
열이 실제 열 그룹에 있음을 알지 못했습니다 (논리적 그룹을 생각하고있었습니다.)
이것은에 대답되었습니다 나타납니다 다른 게시물 (또한 Mikeret57의)이 같은 질문에 대해. 열이 실제 그룹에 있으면 다음과 같은 지루한 접근을 피할 수 있습니다.
*** EDIT 종료
희망을 갖고 상대적으로 이해할 수있는 한 가지 방법이 있습니다 (많은 다른 것들이 있습니다).
기본적으로 원하는 열 (여기서 HB_로 시작하는 모든 열)을 포함하는 식을 작성한 다음이 표현식을 대신 사용하십시오 (이 목적으로 사용한 자리 표시 자 대신 ...). 이 경우에는 자리 표시자를 "cols"라고 함)를 조바꿈 문을 포함하는 표현식으로 호출하고이 새로 형성된 표현식을 평가합니다.
dt = 데이터 테이블 ( "tran_HB");
collist = (dt << getcolumnnames);
colexpr = Expr (열 ());
For (i = 1, i = N Items (collist), i ++,
If (Left (Char (콜리스트 ), 3) == "HB_",
삽입 위치 (colexpr, collist )
)
);
trans_expr = Expr (
dt << 조바꿈
cols,
작성자 (: 가족, : 그룹),
레이블 (: 레이블),
출력 테이블 ( "sum_HB_w_0")
)
);
Eval (대체 (trans_expr, Expr (cols), Expr (collist ()))));
다음은 문자열 연산을 사용하는 또 다른 방법입니다.
dt = 데이터 테이블 ( "tran_HB");
collist = (dt << getcolumnnames (string));
for (i = nitems (collist), i> = 1, i--,
if (왼쪽 (collist , 3)! = "HB _", removefrom (collist, i))
);
eval (parse (substitute (
"\ [
dt << 조바꿈
열 (: xxx),
작성자 (: 가족, : 그룹),
레이블 (: 레이블),
출력 테이블 ( "sum_HB_w_0")
)
] \ ",
"xxx", concatitems (collist, ", :")
))));
건배,
브래디