<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich habe eine Liste bestehend aus stringlist={Albert,Bert,Cathy,Daniel,Total}, die Spaltennamen in einer Tabelle sind
Ich möchte in derselben Tabelle 4 neue Spalten erstellen, mit neuen Spaltennamen Albert Total, Bert Total, Cathy Total, Daniel Total, wobei die Formel von Albert total = Albert/Total, Bert = Bert/Total usw
Die Spaltennamen albert, bert, cathy, daniel können variabel sein, aber der Spaltenname total ist immer gleich.
Folgendes habe ich versucht:
for(i=1,i<=nitems(stringlist),i++,
dt< )||" Gesamt",
formula((eval(parse(stringlist ))/:gesamt)
)
)
);
Ich habe Varianten von evallist, evalexpr, parse ohne Erfolg ausprobiert ...
Cool!Ich habe die Lösungen durchgeblättert und die folgende Lösung verwendet (falls jemand neugierig ist) - Ihre ist besser, weil sie nicht von der Spaltenposition abhängt ...
nlist=ncols(dt)
cols=dt<
totals=column("total")<
for(i=1,i<=nliste-1,i++,
newcolexpr=expr(
dt<< neue Spalte( char(Spalten )||"_Total",numeric,formula(expr(cols ))/expr(Summe ))));
Eval(eval expr(newcolexpr));
)
);
Dies wird den Trick machen:
dt = Neue Tabelle ( "Ohne Titel" , Zeilen hinzufügen ( 5 ) ,
Neue Spalte ( "Albert" , Numerisch ,
Kontinuierlich , Format ( "Am besten" , 12 ) , Werte einstellen ( [ 1 , 2 , 3 , 4 , 5 ] ) ) ,
Neue Spalte ( "Bert" , Numerisch , Kontinuierlich , Format ( "Am besten" , 12 ) ,
Werte einstellen ( [ 6 , 7 , 8 , 9 , 10 ] )) ,
Neue Spalte ( "Cathy" , Numerisch , Kontinuierlich , Format ( "Am besten" , 12 ) ,
Werte einstellen ( [ 11 , 12 , 13 , 14 , 15 ] )) ,
Neue Spalte ( "Daniel" , Numerisch , Kontinuierlich , Format ( "Am besten" , 12 ) ,
Werte einstellen ( [ 16 , 17 , 18 , 19 , 20 ] )) ,
Neue Spalte ( "Gesamt" , Numerisch , Kontinuierlich , Format ( "Am besten" , 12 ) ,
Werte einstellen ( [ 23 , 43 , 222 , 32 , 444 ] )) ,
) ;
Saitenliste = dt << Spaltennamen erhalten ( Schnur ) ;
Für ( ich = 1 , ich <= N Artikel ( Saitenliste ) , ich ++,
ein_Spalte = Saitenliste [ ich ] ;
Wenn ( ein_Spalte != "Gesamt" ,
neue_Spalte = ein_Spalte || "Gesamt" ;
col_string = "dt << neue Spalte(neue_Spalte, Formel(:" || ein_Spalte || " / :Gesamt))" ;
auswerten ( analysieren ( col_string )) ;
) ;
) ;