<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />테이블의 열 이름인 stringlist={Albert,Bert,Cathy ,Daniel,Total}로 구성된 목록이 있습니다.
새 열 이름 Albert Total, Bert Total, Cathy Total, Daniel Total을 사용하여 동일한 테이블에 4개의 새 열을 만들고 싶습니다. 여기서 Albert total = Albert/Total, Bert = Bert/Total 등의 공식이 있습니다.
열 이름 albert, bert, cathy, daniel은 변수일 수 있지만 열 이름 total은 항상 동일합니다.
내가 시도한 것은 다음과 같습니다.
for(i=1,i<=nitems(stringlist),i++,
dt<<새 열 이름(eval(stringlist )||" 합계",
수식((eval(구문 분석(문자열 목록 ))/:총)
)
)
);
나는 evallist, evaexpr, parse의 변형을 시도했지만 아무 소용이 없습니다...
시원한!나는 솔루션을 통해 트롤링하고 있었고 아래 솔루션을 사용하고있었습니다 (다른 사람이 궁금한 경우)-열 위치에 의존하지 않기 때문에 귀하의 솔루션이 더 좋습니다 ...
nlist=ncols(dt)
cols=dt<< 열 이름 가져오기;
totals=column("total")<<행렬로 가져오기;
for(i=1,i<=nlist-1,i++,
newcolexpr=expr(
dt<< 새 열( char(cols )||"_Total",숫자,공식(expr(cols ))/expr(총계 ))));
Eval(eval expr(newcolexpr));
)
);
이것은 트릭을 할 것입니다:
dt = 새 테이블 ( "무제" , 행 추가 ( 5 ) ,
새 열( "앨버트" , 숫자 ,
마디 없는 , 체재 ( "최상의" , 12 ) , 값 설정 ( [ 1 , 2 , 삼 , 4 , 5 ] ) ) ,
새 열 ( "버트" , 숫자 , 마디 없는 , 체재 ( "최상의" , 12 ) ,
값 설정 ( [ 6 , 7 , 8 , 9 , 10 ] )) ,
새 열 ( "캐시" , 숫자 , 마디 없는 , 체재 ( "최상의" , 12 ) ,
값 설정 ( [ 11 , 12 , 13 , 14 , 15 ] )) ,
새 열 ( "다니엘" , 숫자 , 마디 없는 , 체재 ( "최상의" , 12 ) ,
값 설정 ( [ 16 , 17 , 18 , 19 , 20 ] )) ,
새 열 ( "총" , 숫자 , 마디 없는 , 체재 ( "최상의" , 12 ) ,
값 설정 ( [ 23 , 43 , 222 , 32 , 444 ] )) ,
) ;
문자열 목록 = dt << 열 이름 가져오기 ( 끈 ) ;
을 위한 ( 나 = 1 , 나 <= N개 항목 ( 문자열 목록 ) , 나 ++,
one_col = 문자열 목록 [ 나 ] ;
만약에 ( one_col != "총" ,
new_col = one_col || " 총" ;
col_string = "dt << 새 열(new_col, 수식(:" || one_col || " / :총))" ;
평가 ( 구문 분석 ( col_string )) ;
) ;
) ;