<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />여보세요,
열 이름 인 문자열 목록이 있습니다. 데이터 테이블에서 열의 위치 (i)를 확인한 다음 수식 (Column (i) + Column (i + 1))이있는 새 열을 추가하려고합니다. 내 코드는 다음과 같습니다.
| 에이 | 비 | 기음 | 디 | 이자형 | 에프 |
|---|
1 | 2 | 삼 | 4 | 5 | 6 |
| 1 | 2 | 삼 | 4 | 5 | 6 |
| 1 | 2 | 삼 | 4 | 5 | 6 |
cols = dt << 열 이름 가져 오기 (St
반지);
list = { "B", "D"};
n = N 품목 (목록);
locate = {} :
For (i = 1, i <= n, i ++,
위치하고 있다 = Loc (dt, list );
새 열 ( "새로 만들기", 수식 (열 (locate ) + 열 (locate + 1)))
);
Loc ()가 행렬을 반환하고 Column ()이 숫자 만 평가할 수 있기 때문에 문제가 발생합니다. 내 최종 데이터 테이블을 다음과 같이 표시합니다.
| 에이 | 비 | 기음 | 디 | 이자형 | 에프 | 새로운 | 새로운 2 |
|---|
| 1 | 2 | 삼 | 4 | 5 | 6 | 5 | 9 |
| 1 | 2 | 삼 | 4 | 5 | 6 | 5 | 9 |
| 1 | 2 | 삼 | 4 | 5 | 6 | 5 | 9 |
| 1 | 2 | 삼 | 4 | 5 | 6 | 5 | 9 |
누구든지 나를 도울 수 있습니까?
수식 열은 종속 열이 제거되면 자연스럽게 작동하지 않습니다. 수식에 사용되는 열을 삭제하려면 먼저 열 수식을 사용하는 것이 무엇입니까? 단지 합계가 아니라 열 수식이 제공하는 동적 이점에 관심이 없다면 수식을 사용하지 않는 것이 좋습니다 (이 또한 훨씬 쉬운 작업입니다).
위의 표를 참조하십시오.
명부 = { "비" , "디" } ;
위치하고 있다 = Expr ( Loc ( 칼 , 명부 [ 나는 ] ) [ 1 ] ) ;
에 대한 ( 나는 = 1 , 나는 <= N 개 항목 ( 명부 ) , 나는 ++,
칼 = dt << 열 이름 가져 오기 ( 끈 ) ;
안부 = dt << 새 열 ( "새로운" , 숫자 ) ;
각 행에 대해 ( 안부 [] = 기둥 ( 위치하고 있다 ) [] + 기둥 ( 위치하고 있다 + 1 ) [] ) ;
dt << 열 삭제 ( 기둥 ( 위치하고 있다 ) , 기둥 ( 위치하고 있다 + 1 ) ) ;
안부 << 세트 이름 ( 명부 [ 나는 ] ) ;
) ;
정말 고맙습니다! 이 접근법은 아주 잘 작동합니다.
나는 또한 후속 질문이 있습니다. 이 새 테이블의 열을 약간 변경하고 싶습니다.
| 에이 | 비 | 기음 | 디 | 이자형 | 에프 | 새로운 | 새로운 2 |
|---|
1 | 2 | 삼 | 4 | 5 | 6 | 5 | 9 |
| 1 | 2 | 삼 | 4 | 5 | 6 | 5 | 9 |
| 1 | 2 | 삼 | 4 | 5 | 6 | 5 | 9 |
"New"및 "New 2"열을 작성하기 위해 합계 된 4 개의 열을 제거하고 list = { "B", "D"}를 사용하여 결과의 테이블이 다음과 같이 표시되도록 이름을 바꿀 수 있습니까?
jsl에 의해 열 수식에 열 변수를 가져 오는 것은 쉽지 않습니다. 수식은 최종 표현식과 정확히 일치해야합니다. 즉, 자동으로 계산되는 것은 없습니다. 트릭은 표현식 (또는 문자열)을 정의하고 조작 한 다음 eval, 구문 분석기 등의 올바른 조합을 사용하는 것입니다.
다음은 작동하는 예제입니다. 이름이 기둥을 찾고 이름을 다시 파싱하여 파싱됩니다. 좌석! 나는 더 간단한 절차를 찾지 못했지만 누구나 좀 더 세련된 솔루션 아이디어가 있다면 관심이있다.
// 예제 테이블을 만든다.
dt = 새 테이블 ( "테스트" ,
행 추가 ( 삼 ) ,
새 열 ( "에이" , 숫자 , 마디 없는 , 체재 ( "베스트" , 1 ) , 값 설정 ( [ 1 , 1 , 1 ] ) ) ,
새 열 ( "비" , 숫자 , 마디 없는 , 체재 ( "베스트" , 12 ) , 값 설정 ( [ 2 , 2 , 2 ] ) ) ,
새 열 ( "기음" , 숫자 , 마디 없는 , 체재 ( "베스트" , 12 ) , 값 설정 ( [ 삼 , 삼 , 삼 ] ) ) ,
새 열 ( "디" , 숫자 , 마디 없는 , 체재 ( "베스트" , 12 ) , 값 설정 ( [ 4 , 4 , 4 ] ) ) ,
새 열 ( "이자형" , 숫자 , 마디 없는 , 체재 ( "베스트" , 12 ) , 값 설정 ( [ 5 , 5 , 5 ] ) ) ,
새 열 ( "에프" , 숫자 , 마디 없는 , 체재 ( "베스트" , 12 ) , 값 설정 ( [ 6 , 6 , 6 ] ) )
) ;
// 여기에서 스크립트 시작하기
칼 = dt << 열 이름 가져 오기 ( 끈 ) ;
명부 = { "비" , "디" } ;
// expr 열 찾기
위치하고 있다 = Expr ( Loc ( 칼 , 명부 [ 나는 ] ) [ 1 ] ) ;
// 수식 expr을 가진 새로운 열
에프 = Expr ( 새 열 ( "새로운" , 공식 ( Expr ( 파싱 ( 기둥 ( 위치하고 있다 ) << 이름을 얻다 ) )
+ Expr ( 파싱 ( 기둥 ( 위치하고 있다 + 1 ) << 이름을 얻다 ) ) ) ) ) ;
// 목록 반복
에 대한 ( 나는 = 1 , 나는 <= N 개 항목 ( 명부 ) , 나는 ++,
평가 ( Eval Expr ( 에프 ) )
) ;