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