다중 열(문자, 명목) 데이터 테이블이 있습니다. 누적되는 열의 중복 항목/항목을 무시하고 마지막 4개 열의 항목/항목을 동일한 데이터 테이블의 새 열로 가져오고 싶습니다. JSL에서 이를 달성하는 방법은 무엇입니까?
데이터가 어떻게 보이는지, 그리고 결국 어떻게 보일지 모른 채 내 최선의 추측은 다음의 조합을 사용하는 것입니다. 연관 배열() << 키 가져오기 그리고 항목 연결()
@jthi 감사해요. 그런데 이거 드랍이 중복되나요?
내 열(겹쳐질 예정)에는 공통 Char 항목이 있지만 고유한 항목도 있습니다. 중복 항목을 삭제하는 새 열에 각각을 유지하고 싶습니다.
연관 배열 중복된 키를 가질 수 없으므로 그렇습니다(또한 주문되었으므로 순서가 변경될 수 있음).
이를 수행하는 몇 가지 방법은 다음과 같습니다.
- 테이블 작업:
- 테이블 > 쌓기를 사용하여 열을 하나의 열에 쌓습니다.
- 해당 누적 열이 있는 테이블 > 요약을 그룹 역할로 사용하세요.
- JSL
- 열 값을 목록으로 가져오기
- list_of_values = 컬럼(테이블 이름, 컬럼 이름) << 값 가져오기
- 다른 열에서 이 작업을 다시 수행하고 해당 값을 목록에 삽입할 수 있습니다.
- list_of_values = Insert Into(list_of_values, 열(테이블 이름, 다른 열 이름) << 값 가져오기)
- 필요에 따라 반복
- Associate Array를 사용하여 고유한 값을 얻으세요.
- Unique_values = (Associative Array(list_of_values)) << 키 가져오기
- 해당 값 목록을 데이터 테이블의 새 열에 넣습니다.
Names Default To Here( 1 );
// create table with 4 columns with random letters
nr = 20;
dt = New Table( "Example", addrows( nr ) );
letterlist = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q",
"R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
dt << New Column( "C1", character );
Column( dt, "C1" ) << set values( letterlist[J( nr, 1, Random Integer( 26 ) )] );
dt << New Column( "C2", character );
Column( dt, "C2" ) << set values( letterlist[J( nr, 1, Random Integer( 26 ) )] );
dt << New Column( "C3", character );
Column( dt, "C3" ) << set values( letterlist[J( nr, 1, Random Integer( 26 ) )] );
dt << New Column( "C4", character );
Column( dt, "C4" ) << set values( letterlist[J( nr, 1, Random Integer( 26 ) )] );
// Method 1
dtstack = dt << Stack(
columns( :C1, :C2, :C3, :C4 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Output Table( "Stacked Values" )
);
dtstack << Summary(
Group( :Data ),
Freq( "None" ),
Weight( "None" ),
output table name( "Unique Values" )
);
//Method 2
list_of_values = Column( dt, "C1" ) << get values;
Insert Into( list_of_values, Column( dt, "C2" ) << get values );
Insert Into( list_of_values, Column( dt, "C3" ) << get values );
Insert Into( list_of_values, Column( dt, "C4" ) << get values );
Print( list_of_values );
unique_values = (Associative Array( list_of_values )) << get keys;
dtunique = New Table( "Unique Values" );
dtunique << New Column( "Unique Values", character );
Column( dtunique, "Unique Values" ) << set values( unique_values );
@jthi 좋아요. 감사해요. 이것이 올바른 구문입니까?
aa = Associative Array( As Column(lastCH), As Column(2ndLastCH), As Column(3rdLastCH), As Column(4rthLastCH)) << get keys();
// Where "lastCH", "2ndlastCH", "3rdlastCH" and "4rthlastCH" are column headers for the last four columns in my data table, supplied from above
@샘가드너
둘 다 잘 작동하지만 실제 데이터 세트의 경우와 같이 모든 열의 행 수가 동일하지 않으면 빈 행을 추가합니다.
코드를 삽입하면
remove from(unique_values, loc(unique_values,"")[1])
Unique_values 목록이 생성된 줄 뒤에서 빈 문자열인 목록에서 값이 제거됩니다.
remove from(unique_values, 1)
키는 요청된 알파벳순으로 정렬되므로 작동해야 합니다.