여러 조건에 따라 행 선택
문제
둘 이상의 조건을 충족하는 데이터 테이블의 행을 선택하려고 한다고 가정합니다. 또는 몇 가지 조건 중 하나를 충족하는 행을 선택하려고 할 수 있습니다.
해결책
다음 예는 Select Where 메시지와 함께 논리적 AND(&) 및 OR(|) 연산자를 사용하여 여러 조건을 충족하는 행을 선택하는 방법을 보여줍니다.자세한 내용은 포함된 주석을 참조하십시오.
/* Open a sample data table */
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
/* Select rows where students are over 13, who are also less than 65 inches tall */
dt << Select Where( :age > 13 & :height < 65 );
Wait( 2 ); // For demonstration purposes
/* Select rows where students are either 12 or 14 years old */
dt << Select Where( :age == 12 | :age == 14 );
Re: 여러 조건에 따라 행을 선택합니다.@rishdude23
열 수식은 기본적으로 행을 반복합니다.따라서 For() 루프가 필요하지 않습니다.Lag() 함수는 이전 행의 인수 값을 반환합니다.그래서 이와 같은 것이 당신에게 도움이 될 수 있습니다.
Formula(
If(
(:age == Lag( :age, 1 )) & (:sex == Lag( :sex, 1 )), "Same age, same gender",
(:age != Lag( :age, 1 )) & (:sex == Lag( :sex, 1 )), "Diff age, same gender",
(:age == Lag( :age, 1 )) & (:sex != Lag( :sex, 1 )), "Same age, diff gender",
(:age != Lag( :age, 1 )) & (:sex != Lag( :sex, 1 )), "Diff age, diff gender"
)
)
도움이 되길 바랍니다.
이 질문은 Select Where() 사용과 관련이 없지만 열 수식과 관련이 있습니다.이와 같은 질문은 많은 스크립터가 응답할 수 있는 일반 토론 영역으로 연결하는 것이 좋습니다.
Re: 여러 조건에 따라 행을 선택합니다.@Wendy_Murphrey
안녕,
for long 및 몇 가지 조건을 포함하는 수식을 사용하여 "AgeSex_comp"라는 빅 데이터 jmp 파일에 새 열을 쓰려고 합니다. 이전 행의 연령 및 성별 정보를 다음 행과 비교하여 같은지 다른지 확인하고 싶습니다. 다음은 내가 작성한 스크립트입니다. 작동하지 않습니다. 내가 잘못 가고있는 아이디어가 있습니까?
dt = current data table();
dt << NewColumn("AgeSex_Comp", Character, Nominal, Formula(
FOR(i=1, i<= N Row(dt), i++,
if((:age[Row(i)] == :age[Row(i+1)]) & (:sex[Row(i)] == :sex[Row(i+1)]),"Same age, same gender",
(:age[Row(i)] != :age[Row(i+1)]) & (:sex[Row(i)] == :sex[Row(i+1)]),"Diff age, same gender",
(:age[Row(i)] == :age[Row(i+1)]) & (:sex[Row(i)] != :sex[Row(i+1)]),"Same age, diff gender",
(:age[Row(i)] != :age[Row(i+1)]) & (:sex[Row(i)] != :sex[Row(i+1)]),"Diff age, diff gender"
)
)
)
)