모든 데이터가 누락된 경우 변수 열 번호의 행을 어떻게 삭제합니까?자동 생성된 데이터 세트가 있고 하위 문자열 "X_Clean"이 있는 일부 열에는 일부 null 값이 있습니다.경우에 따라 데이터 세트에 따라 2, 3, 4 또는 5개의 서로 다른 열이 있습니다.이러한 "X_Clean" 열의 모든 "n"에 null 값이 있는 경우에만 행을 삭제하고 싶지만 그 중 하나 이상이 값으로 채워진 경우에는 삭제하지 않습니다.
관심있는 열 목록을 생성하기 위해 FOR 루프를 수행하려고 생각하고 있었는데 이것이 작동합니다.
col_list = dt <<GET column="" names="">0, i--,
if(!contains(col_list[i], "X_Clean"),
remove from(col_list, i);
));</GET>하지만 다음 단계를 확신할 수 없습니다.각 개별 열에 대해 또 다른 FOR 루프를 수행할 수 없기 때문에 이러한 모든 열의 값을 요약하고 null인 경우 삭제해야 합니다. 아니면 다른 것이 필요합니까?
다음은 내 테이블의 예입니다. 이 경우 날짜의 세 번째 줄만 삭제할 수 있습니다.
| 실재 | 2X_클린 | 3X_클린 | 4X_클린 |
| ㅏ | 1 | 삼 | 6 |
| 비 | | 4 | 5 |
| ㅏ | | | |
| 비 | 4 | 1 | 삼 |
| ㅏ | 삼 | 4 | 4 |
| 6 | 1 | 1 | 0 |
다음은 특정 열이 다양하기 때문에 할 수 없다는 점을 제외하고 특정 열을 하드 코딩할 수 있었다면 수행했을 방법입니다.
dt << Select Where(Is Missing(:Name( "2X_Clean" ) | :Name( "3X_Clean" ) | :Name( "4X_Clean" )))<<DELETE rows=""></DELETE>
어떤 아이디어?감사해요!
Re: 모든 데이터가 누락된 경우 변수 열 번호의 행을 어떻게 삭제합니까?고마워, 짐.
Re: 모든 데이터가 누락된 경우 변수 열 번호의 행을 어떻게 삭제합니까?이건 내 잘못이야.숫자로 시작하는 열이 JMP에 혼동을 줄 수 있다는 사실을 깨달았어야 했습니다.열 이름에 대한 참조 주위에 :Name() 함수를 추가했습니다.
dt = Current Data Table();
col_list = dt << get column names( string );
For( i = N Items( col_list ), i > 0, i--,
If( !Contains( col_list[i], "X_Clean" ),
Remove From( col_list, i )
)
);
theExpr = "dt << select where(isMissing(Sum(:name(\!"" || col_list[1];
For( i = 2, i <= N Items( col_list ), i++,
theExpr = theExpr || "\!"),:name(\!"" || col_list[i]
);
theExpr = theExpr || "\!")))==1)<<DELETE rows=""></DELETE>
Re: 모든 데이터가 누락된 경우 변수 열 번호의 행을 어떻게 삭제합니까?짐, 이것은 흥미로운 주제입니다. 첨부된 데이터 테이블을 열고 다음 jsl을 실행하면 모든 null 행을 삭제할 수 없는 것 같습니다. 왜?
dt = 현재 데이터 테이블 () ;
theExpr = "dt << 선택 위치(isMissing(Sum(:" || col_list [ 1 ] ;
을 위한 ( 나 = 2 , 나 <= N개 항목 ( col_list ) , 나 ++,
theExpr = theExpr || ",:" || col_list [ 나 ]
) ;
theExpr = theExpr || "))==1)<<행 삭제;" ;
평가 ( 구문 분석 ( theExpr ) ) ;
Re: 모든 데이터가 누락된 경우 변수 열 번호의 행을 어떻게 삭제합니까?원하는 것을 달성하기 위해 실행해야 하는 동적 코드인 리터럴 문자열 변수를 빌드한 다음 빌드한 후 실행하기만 하면 됩니다.아래 코드는 수행 방법의 샘플입니다.
theExpr = "dt << select where(isMissing(Sum(:" || col_list[1];
For( i = 2, i <= N Items( col_list ), i++,
theExpr = theExpr || ",:" || col_list[i]
);
theExpr = theExpr || "))==1)<<DELETE rows=""></DELETE>