WIDE에서 LONG으로 전치 및 수식 질문안녕하세요-두 가지 관련 질문
SPLIT을 사용하여 긴 파일을 넓은 파일로 변환했지만 넓은 파일을 긴 파일로 STACK/조옮김하려는 약간 더 복잡한 상황이 있습니다.
고유한 주체 ID가 있는 데이터 세트와 수백 개의 열/변수가 있습니다. 변수 이름은 Year 1이 '2'로 끝나고 Year 2가 '3'으로 끝나는 등을 제외하고는 완전히 동일합니다. 시간 변수(1, 2,3,4) 변수 이름은 끝에 숫자가 없는 한 번만 있습니까?
관련이 있지만 위와 다른 방식으로 접근하는 이러한 데이터 세트에서 JMP에서 수식을 생성하여 모든 XXX백 열에 대해 알려주고 끝에서 #(예: 1, 2)를 제거하는 방법이 있습니까? 열/변수 이름? 분명히 수동으로 할 수 있지만 영원히 걸릴 것입니다.
정말 고마워!
데이터 혼합 및 정리Re: WIDE에서 LONG으로 변환 및 수식 질문아래의 데이터 테이블을 사용하여 누적 데이터 테이블을 생성하는 방법을 안내해 드리겠습니다.

이동
테이블=>스택
스택 열 선택 상자에 쌓을 모든 열을 배치하여 대화 상자 창을 채우십시오.

다음과 같은 테이블이 생성됩니다.

"열 이름"이라는 데이터 테이블에 새 열을 만듭니다.

열 이름 열의 열 머리글을 마우스 오른쪽 버튼으로 클릭하고 수식을 선택합니다.

레이블 열의 값 끝에 있는 숫자 앞에 있는 모든 항목을 가져와 열 이름 값으로 유지하는 수식을 지정해야 합니다.따라서 이것은 실제 데이터에 따라 여러 가지 방법으로 수행할 수 있습니다.이 예에서 수식은 숫자가 표시되기 전에 모든 것을 찾아 열 이름 값으로 사용합니다.
수식은 :Label 열에서 첫 번째 단어를 찾고 숫자 값 "0123456789"를 찾을 때마다 중지합니다.

결과는

이제 다른 새 열을 만들고 이름을 "연도"로 지정합니다.이 경우 연도 수식의 값이 다음과 같이 열의 마지막 문자를 사용하려고 합니다.

최종 데이터 테이블을 제공합니다.

열 이름 바꾸기와 관련하여 대화식으로 수행하는 대화식 방법을 모르겠습니다.그래서 앞서 제공한 스크립트를 실행해야 할 것 같습니다.
Re: WIDE에서 LONG으로 변환 및 수식 질문답장을 보내 주셔서 감사합니다.기억이 나신다면 작년에 한 질문으로 저를 도우셨습니다.
불행하게도 나는 JMP 스크립트에 익숙하지 않습니다. 가리키고 클릭만 하면 됩니다.그리고 알아낼 수 있더라도 변수가 많기 때문에 각각에 대해 해당 코드를 실행해야 하지 않을까요?
Re: WIDE에서 LONG으로 변환 및 수식 질문다음은 3개의 열이 있는 누적 데이터 테이블을 생성하는 스크립트입니다.

다음은 데이터 테이블의 열 끝에서 숫자를 제거하는 스크립트입니다.열 이름을 변경할 때 최종 결과가 이전 열 이름과 동일한 열 이름인 경우 JMP는 숫자 값을 추가하여 새 열 이름을 고유한 이름으로 만듭니다.
Names Default To Here( 1 );
dt = Current Data Table();
For( i = 1, i <= N Cols( dt ), i++,
if(
is missing(
Num(
word(
-1,
Lowercase( Column( dt, i ) << get name )
,
"abcdefghijklmnopqrstuvwxyz;:, -_)(")
)
) == 0,
Column( dt, i ) <<
set name(
substr(
Column(dt,i)<<GET name=""></GET>
Names Default To Here( 1 );
dt = new table( "Example",
add rows( 10 ),
New Column( "Year2", formula( Random Integer( 1, 100 ) ) ),
New Column( "Year3", formula( Random Integer( 1, 100 ) ) ),
New Column( "Year4", formula( Random Integer( 1, 100 ) ) )
);
dtStack = Data Table( "Example" ) << Stack(
columns( :Year2, :Year3, :Year4 ),
Source Label Column( Column ),
Stacked Data Column( "Data" )
);
dtStack << New Column( "Year",
formula(
Num(
Word(
-1,
Lowercase( :Column ),
"abcdefghijklmnopqrstuvwxyz;:, -_)("
)
)
)
);
dtStack:Year << delete formula;
for each row(
:Column = substr(
:Column,
1,
Length( :Column ) - Length(
Word(
-1,
Lowercase( :Column ),
"abcdefghijklmnopqrstuvwxyz;:, -_)("
)
)
)
);