<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 总计 = Albert/Total、Bert = Bert/Total 等公式
列名 albert、bert、cathy、daniel 可以是可变的,但列名 total 始终相同。
这是我尝试过的:
for(i=1,i<=nitems(stringlist),i++,
dt<<新列名(eval(stringlist) )||"总计",
公式((评估(解析(字符串列表))/:全部的)
)
)
);
我已经尝试了 evallist、evalexpr、parse 的变体,但无济于事......
凉爽的!我正在浏览解决方案,并使用以下解决方案(以防其他人好奇)-您的更好,因为它不依赖于列位置...
nlist=ncols(dt)
cols=dt<<获取列名;
totals=column("total")<<得到矩阵;
for(i=1,i<=nlist-1,i++,
newcolexpr=expr(
dt<< 新列( char(cols )||"_Total",numeric,formula(expr(cols ))/expr(总计))));
eval(eval expr(newcolexpr));
)
);
这将解决问题:
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 || “ 全部的” ;
字符串= “dt << 新列(new_col,公式(:) || one_col || “ / :全部的))” ;
评估(解析(字符串)) ;
) ;
) ;