안녕하세요, 저는 열 내용의 개수와 최종 출력값이 가변적인 데이터를 대상으로 테이블 조작(주로 일치 함수를 사용하여 새 열 추가)을 자동화하는 스크립트를 작성하고 있습니다.
저는 :SampleID(Init_IDs에 저장됨)에서 고유한 내용을 식별하고 팝업 창을 통해 사용자에게 이름을 변경하도록 요청하는 스크립트를 작성했습니다. 변경된 내용은 New_IDs에 저장되며, 이후 표준 일치 수식을 사용하여 새 열을 생성할 수 있습니다.
New Column( "Sample",
Character,
Nominal,
Formula(
Match( :SampleID,
"C1", "Constant 1",
"C2", "Constant 2",
Init_IDs[1], New_IDs[1],
Init_IDs[2], New_IDs[2],
Init_IDs[3], New_IDs[3],
Init_IDs[4], New_IDs[4],
Init_IDs[5], New_IDs[5],
Init_IDs[6], New_IDs[6],
)
)
);
이 공식은 New_IDs의 크기가 6인 제 테스트 데이터 세트에서는 작동하지만, 이 크기는 변경될 수 있으므로 유연성을 위해 for 루프를 사용하고 싶습니다. 제가 시도해 본 코드는 다음과 같지만 작동하지 않습니다.
New Column( "Sample",
Character,
Nominal,
Formula(
Match( :SampleID,
"C1", "Constant 1",
"C2", "Constant 2",
) +
For( i = 1, i <= N Items( New_IDs ), i++,
Match( :SampleID,
Init_IDs[i], New_IDs[i],
)
)
),
);
N개 항목(New_IDs)이 6이라는 값을 생성하는 것을 확인했습니다. 다른 MATCH 함수와 결합하지 않고 for 루프만 단독으로 시도해 봤지만 역시 작동하지 않았습니다. 따라서 중간에 있는 '+' 기호가 문제일 수도 있지만, 근본적인 문제는 for 루프 자체에 있는 것 같습니다.
MATCH 함수 대신 IF 문을 사용하여 간소화해 보았지만, 역시 성공하지 못했습니다.
New Column( "Sample",
Character,
Nominal,
Formula(
For( i = 1, i <= 6, i++,
If( :SampleID == Init_IDs[i],
New_IDs[i]
)
)
)
);