<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />안녕 모두,
나는이 질문으로 여러 번왔다.
새로 생성 된 여러 열에 한 가지 유형의 수식을 적용합니다. 누군가 그 뒤에있는 주요 논리를 설명해 주시겠습니까?
예 :
1. 나는 12 개월 동안 72 년의 데이터 세트를 가지고있다. 나는 한 해를 가장 좋게 설정하고 100 %로 받아들이고 싶습니다. 다른 모든 해를 백분율로 비교하고 싶습니다 (특히 수익의 증가 또는 감소 비율).
2. 데이터 테이블에 100 개의 다른 열 (1,2,3,4,5, ...)이있는 MainColumn으로 생각할 수있는 열이 1 개 있고 100 개의 새 열을 추가하면 각각에 대해 동일한 수식을 사용하고 싶습니다. NewColumn1 = Column1 / MainColumn, NewColumn2 = Column2 / MainColumn ... 등 ...
삼. 쌍을 이루는 관계 (Column1 Column2, Column3 Column4)의 열이 있고 쌍 열 (= Column1 + Column2), (ColumnNew2 = Column3 + Column4)과 관련된 수식을 사용하여 새 열 (ColumnNew1)을 만들고 싶습니다. .
어떻게해야합니까?
많은 감사
난 당신이 스크립팅 솔루션을 찾고 있다고 가정합니다. 다음은 몇 가지 아이디어입니다.
//Example tables
dt1 = New Table("example 1",
add rows(12 * 72),
New Column("year", numeric, Formula(Sequence(1944, 2015, 1, 12))),
New Column("month", numeric, values(Repeat(1 :: 12, 72))),
New Column("revenue", numeric, Formula(Random Integer(10000)))
);
dt2 = New Table("example 2", add rows(5), New Column("main column", numeric, values(1 :: 5)));
dt2 << add multiple columns("column", 10, after last, numeric);
For(i = 2, i <= 11, i++,
Column(dt2, i) << set formula(Random Integer(10))
);
// 1)
dt1 << New Column("revenue, % of year's best month", numeric, Format("percent"), Formula(:revenue / Col Max(:revenue, year)));
// 2) and 3) The trick is to use Eval Expr() and Name Expr() when defining formulas.
cols = dt2 << get column names;
// add formulas for 2
For(i = 2, i <= 11, i++,
colname = Char(cols[i]) || " by main";
f = Eval Expr(Expr(cols[i]) / :main column);
dt2 << New Column(colname, numeric, formula(Name Expr(f)));
);
// dito for 3
For(i = 2, i <= 6, i = i + 2,
colname = Char(cols[i]) || "+" || Char(cols[i + 1]);
f = Eval Expr(Expr(cols[i]) + Expr(cols[i + 1]));
dt2 << New Column(colname, numeric, formula(Name Expr(f)));
);