이 작업을 수행하는 ID에 대해 테이블 열을 추가하는 가장 좋은 방법에 대한 제안이 필요합니다 ....<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />기본적으로이 원래 테이블이 있습니다.
| 열 A | 열 B | 열 A | 열 B |
| 에이 | 이자형 | 나는 | 엠 |
| 비 | 에프 | j | 엔 |
| 기음 | 지 | 케이 | 영형 |
| 디 | h | 엘 | 피 |
이제 내가하고 싶은 일은 다음과 같은 "새로운 열 ID"가있는 다른 테이블을 만드는 것입니다.
| 새 열 ID | 열 A | 열 B | 열 A | 열 B |
| 1 | 에이 | 이자형 | 나는 | 엠 |
| 1 | 비 | 에프 | j | 엔 |
| 1 | 기음 | 지 | 케이 | 영형 |
| 1 | 디 | h | 엘 | 피 |
| 2 | 에이 | 이자형 | 나는 | 엠 |
| 2 | 비 | 에프 | j | 엔 |
| 2 | 기음 | 지 | 케이 | 영형 |
| 2 | 디 | h | 엘 | 피 |
| 삼 | 에이 | 이자형 | 나는 | 엠 |
| 삼 | 비 | 에프 | j | 엔 |
| 삼 | 기음 | 지 | 케이 | 영형 |
| 삼 | 디 | h | 엘 | 피 |
| 엑스 | 에이 | 이자형 | 나는 | 엠 |
| 엑스 | 비 | 에프 | j | 엔 |
| 엑스 | 기음 | 지 | 케이 | 영형 |
| 엑스 | 디 | h | 엘 | 피 |
지금 내 마음에있는 것은 부분 집합을 작성하여 원래 테이블을 복제하는 것입니다. 그리고이 하위 집합에서 특정 값 (모든 행에 대해 동일)과 함께 "새 열 ID"를 추가합니다. 필요한만큼 하위 집합을 만드는 동일한 과정을 반복합니다 (각 하위 집합에 "새 열 ID"가 추가됨). 끝나면 모든 하위 집합을 하나의 테이블로 연결할 수 있습니다.
공유 할 수있는 아이디어가 더 있는지 알고 싶습니다.
제목 : Re : ID를 위해 테이블 열을 추가하는 가장 좋은 방법에 대한 제안이 필요합니다 ....@Ian과 @ms 여러분의 좋은 제안에 감사드립니다. 현재의 스크립트에서 @Ian의 제안 (@MS의 조합으로)을 통합하려고합니다.
제목 : Re : ID를 위해 테이블 열을 추가하는 가장 좋은 방법에 대한 제안이 필요합니다 ....너무 자주 그렇듯이 간결함은 미덕입니다!
나는 마커스가 너무 좋아서 나중에 재사용 할 수있는 기능을 만들었다.
NamesDefaultToHere ( 1 ) ;
// 샘플 데이터
dt1 = NewTable ( "소스 데이터" ,
NewColumn ( "에이" , 숫자 , 마디 없는 , 공식 ( 임의의 정규화 ())) ,
NewColumn ( "비" , 숫자 , 마디 없는 , 공식 ( RandomInteger ( 1 , 10 )))) ,
AddRows ( 6 ) ;
) ;
// 테이블 'dt'를 'n'번 복제하십시오. . .
복제본 =
기능 ({ dt , 엔 } , { 기본 로컬 } ,
테이블 = 반복 ({ dt } , 엔 - 1 ) ;
new_dt = dt << 사슬 같이 잇다 ( 테이블 ) ;
new_dt << setName (( dt << getName ) || "복제 된" || 숯 ( 엔 ) || "시간" ) ;
idCol = new_dt << newColumn ( "신분증" , 숫자 , 명사 같은 , 공식 ( 천장 ( 열 () / NRow ( dt ))))))) ;
idCol << deleteFormula ;
new_dt << moveSelectedColumns ({ idCol } , "ToFirst" )
) ;
dt2 = 복제본 ( dt1 , 20 ) ;
제목 : Re : ID를 위해 테이블 열을 추가하는 가장 좋은 방법에 대한 제안이 필요합니다 ....여러 복사본을 연결하기 위해 하위 집합을 만들 필요가 없습니다. 연결 대화 상자에서 원본 테이블을 여러 번 추가 할 수 있습니다. 새 ID가 카운터 인 경우 열 수식을 사용하여 ID를 생성 할 수 있습니다.
jsl 예 :
// 스택 dt n 번
dt = 현재 데이터 표 () ;
엔 = 10 ;
테이블 = 반복 ({ dt } , 엔 - 1 ) ;
new_dt = dt << 사슬 같이 잇다 ( 테이블 ) ;
new_dt << 새 열 ( '새 열 ID' , 숫자 , 공식 ( 천장 ( 열 () / 4 )))) ;
제목 : Re : ID를 위해 테이블 열을 추가하는 가장 좋은 방법에 대한 제안이 필요합니다 ....대안을 찾으십시오. 그러나 '더 나은'이라고 말할 수 있는지 확신 할 수 없습니다.
NamesDefaultToHere ( 1 ) ;
// 샘플 (숫자!) 데이터
dt1 = NewTable ( "소스 데이터" ,
NewColumn ( "에이" , 숫자 , 마디 없는 , 공식 ( 임의의 정규화 ())) ,
NewColumn ( "비" , 숫자 , 마디 없는 , 공식 ( RandomInteger ( 1 , 10 )))) ,
AddRows ( 6 ) ;
) ;
// dt1에서 데이터를 'n1'번 복제합니다.
n1 = 2 ;
n2 = NRow ( dt1 ) ;
출처 = dt1 << getAllColumnsAsMatrix ;
목적지 = [] ;
...에 대한 ( 나는 = 1 , 나는 <= 2 , 나는 ++, 목적지 = VConcat ( 목적지 , 출처 )) ;
// ID 열을 벡터로 만든다.
신분증 = SortAscending ( 반복 (( 1 :: n1 ) `, n2 )) ;
// 최종 테이블을 어셈블한다.
칼 = 끼워 넣다 ( dt1 << getColumnNames ( 끈 ) , "신분증" , 1 ) ;
dt2 = AsTable ( 신분증 || 목적지 , << ColumnNames ( 칼 )) ;
dt2 << setName (( dt1 << getName ) || "복제 된" || 숯 ( n1 ) || "시간" ) ;
데이터가 모두 숫자가 아닌 경우 'Matrix로 모든 열 가져 오기'가 계속 작동하지만 dt2를 어셈블 할 때 값을 문자로 다시 매핑하는 방법을 알아내는 추가 작업이 필요합니다.