リストに基づいて列名を作成する方法は?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />テーブル内の列名である stringlist={Albert,Bert,Cathy ,Daniel,Total} で構成されるリストがあります
同じテーブルに 4 つの新しい列を作成したいと思います。新しい列名は Albert Total、Bert Total、Cathy Total、Daniel Total で、式は Albert Total = Albert/Total、Bert = Bert/Total などです。
列名 albert、bert、cathy、daniel は変数にすることができますが、列名 total は常に同じです。
これが私が試したことです:
for(i=1,i<=nitems(stringlist),i++,
dt<<新しい列名(eval(stringlist )||"合計",
formula((eval(parse(stringlist) ))/:合計)
)
)
);
evallist、evalexpr、parse のバリアントを試してみましたが、役に立ちませんでした...
Re: リストに基づいて列名を作成する方法は?いいね!私はソリューションをトローリングしていて、以下のソリューションを使用していました(他の誰かが興味を持っている場合に備えて)-列の位置に依存しないため、あなたの方が優れています...
nlist=ncols(dt)
cols=dt<<列名を取得;
totals=column("total")<<行列として取得;
for(i=1,i<=nlist-1,i++,
newcolexpr=expr(
dt<< new column( char(cols )||"_Total",numeric,formula(expr(cols ))/expr(合計))));
Eval(eval expr(newcolexpr));
)
);
Re: リストに基づいて列名を作成する方法は?これはトリックを行います:
dt =新しいテーブル( 「無題」 、行を追加( 5 ) 、
新しい列( 「アルバート」 、数値、
連続、フォーマット( "一番" 、 12 ) 、設定値( [ 1 、 2 、 3 、 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 column(new_col, formula(:" || one_col || " / :合計))" ;
評価(解析する( col_string ))) ;
) ;
) ;