<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />안녕하세요 여러분, 테이블에 생성된 여러 열을 이러한 열에 특정 char 값("선별")이 있는지 여부를 설명하는 새 열로 결합하는 방법에 대한 질문이 있습니다.
현재 내 데이터 세트는 스크립트의 수식을 기반으로 "screened" 및 "unscreened" 문자 값을 포함하는 "n"개의 새 열을 추가하는 스크립트로 분석됩니다.
내 목표는 'n'개의 새 열 각각의 값을 평가하는 새 열을 추가하는 마지막 단계를 스크립트에 포함하는 것입니다. .
새 열의 수가 항상 같으면 각 열의 값을 확인하면서 긴 If 문을 작성하면 됩니다. 그러나 'n'개의 열을 보려면 스크립트를 작성해야 합니다. 포럼 내부에서 FOR 루프를 사용하려고 생각했습니다. 예를 들면 다음과 같습니다.
dt << New Column("All_screens",character,nominal,setformula(
If( For( i = 1, i <= N Items( 개별 화면 열 ), 개별 화면 열 == "Screened"), ---> 선별 열에 screen이 포함된 경우 ---> "Screened", "Unscreened"와 같은 마법이 필요합니다. ) );
그러나 FOR 루프는 어떤 값도 반환하지 않기 때문에 이 마법을 알아낼 수 없었습니다. 생각이 있는 사람이 있습니까?
감사,
--복숭아
열 수식에서 알 수 없는 열 수에 대해 행 단위 연산을 구현하는 것은 그리 간단하지 않습니다(그러나 마법이 필요한 것은 아닙니다).
다음은 지역 변수를 활용하는 몇 가지 아이디어입니다.
// 예시 테이블
N = 5 ;
nr = 10 ;하지만
dt = 새 테이블 ( "심사 요약" , 행 추가 ( nr ) , 여러 열 추가 ( "엑스" , N , 캐릭터 )) ;
을 위한 ( 나 = 1 , 나 <= N , 나 ++,
열 ( dt , 나 ) << 각 값 설정 ({ "선별" , "비선별" }[ 1 + ( 임의의 정수 ( 1 , nr ) > 1 )])
) ;
// 열에 "screened"가 포함되어 있는지 여부를 나타내는 새 열
dt << 새 열 ( "선별" ,
성격 ,
공식 (
현지의 ({ 나 = 0 , N = 엔콜 ( 현재 데이터 테이블 ()) - 1 } ,
만약에 ( 포함 ( 반복하다 ({ 나 ++ ; 열 ( 나 )[]} , N ) , "선별" ) ,
"선별"
)
)
)
) ;
// 동일하지만 For() 루프가 있습니다. 덜 깔끔한 코드이지만 큰 n에 대해 Repeat()보다 더 효율적일 수 있습니다.
// 중간 목록이 작성되지 않았기 때문에
dt << 새 열 ( "상영2" ,
성격 ,
공식 (
현지의 ({ 나 , N = 엔콜 ( 현재 데이터 테이블 ()) - 2 , 에스 = "" } ,
을 위한 ( 나 = 1 , 나 <= N , 나 ++,
만약에 ( 열 ( 나 )[] == "선별" ,
에스 = "선별" ;
부서지다 () ;
)
) ;
에스 ;
)
)
) ;
// 또는 "screened"의 nr을 반환합니다.
dt << 새 열 ( " Nr of Screened " ,
숫자 ,
공식 ( 현지의 ({ 나 = 0 , N = 엔콜 ( 현재 데이터 테이블 ()) - 삼 } , 합집합 ( 반복하다 ({ 나 ++ ; 열 ( 나 )[] == "선별" } , N )))) ) ;
고마워 짐. 열 수를 모르기 때문에 for 루프를 사용하여 방정식을 expr()에 넣은 다음 for 루프에서 생성된 표현식의 eval()을 사용하여 이것을 if 문으로 이동하려고 합니다. .
나는 당신이 말하는 문제를 해결하기 위해 부울 합산을 사용합니다.4개의 열(a,b,c,d)이 있는 경우 다음 공식을 사용했습니다.
If(sum(a=="검열됨",b=="검열됨",c=="검열됨",d=="검열됨")>0, "검열됨","")