안녕하세요,
데이터를 보정하고 정보를 다음과 같이 출력하는 시스템이 있습니다.
| 타이어 ID | 흘레 | 깊이 | 견인 | 우리를 | 사이 |
| 2326 | 안의 | 0.618584 | 0.117774 | 0.417314 | 21.15549 |
| 2326 | 밖의 | 0.740841 | 0.417079 | 0.417314 | 21.15549 |
| 2327 | 안의 | 0.329065 | 0.218903 | 0.365071 | 25.65573 |
| 2327 | 밖의 | 0.478055 | 0.214953 | 0.365071 | 25.65573 |
타이어 ID는 내부 트레드 판독값에 대해 한 번, 외부 트레드 판독값에 대해 한 번, 총 두 번 읽습니다. 다음과 같이 재구성하는 데 사용할 수 있는 스크립트가 있습니까?
| 타이어 ID | 내부 깊이 | 외부 깊이 | 내부 드래그 | 외부 드래그 | 우리를 | 사이 |
| 2326 | 0.61858445 | 0.74084057 | 0.1177737 | 0.4170794 | 0.41731 | 21.1555 |
| 2327 | 0.32906451 | 0.47805545 | 0.2189025 | 0.2149527 | 0.36507 | 25.6557 |
여기에서는 타이어당 하나의 항목만 있습니다. 깊이 및 끌기에 대한 항목은 내부 또는 외부로 이름이 바뀌었고 동일한 열이 하나로 병합되었습니다. 이것은 더 많은 열이 있는 훨씬 더 큰 시트의 일부입니다. 일부는 다르고 일부는 동일합니다.
이상적으로는 스크립트가 피로한 ID에 따라 동일한 셀을 결정하고 복제를 제거할 수 있습니다. 그러나 열 이름은 절대 변경되지 않기 때문에 미리 결정된 이름으로 설정된 스크립트도 작동할 수 있습니다.
감사합니다!
@jthi , @txnelson , 지난번에 두 분이 정말 큰 도움을 주셨어요! 감사합니다! 어떤 접근 방식을 취해야 하는지 잘 모르겠고 이전 솔루션에서 충분히 유사한 것을 찾을 수 없었습니다.
이것은 무차별 대입 접근 방식이지만 작동합니다.분할 열 및 비분할 열에 대한 변수에 유의하십시오.
dt = New Table( "Base Tire Data", Add Rows( 4 ),
New Column( "Tire ID", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [2326, 2326, 2327, 2327] ) ),
New Column( "Tread", Character( 16 ), "Nominal",
Set Values( {"Inner", "Outer", "Inner", "Outer"} ) ),
New Column( "Depth", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [0.618584, 0.740841, 0.329065, 0.478055] ) ),
New Column( "Drag", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [0.117774, 0.417079, 0.218903, 0.214953] ) ),
New Column( "uS", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [0.417314, 0.417314, 0.365071, 0.365071] ) ),
New Column( "psi", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [21.15549, 21.15549, 25.65573, 25.65573] ) )
);
nr = nrows(dt);
dtt = New Table( "Split Tires");
dtt << new column("Tire ID", Numeric, "Continuous", Format( "Best", 12 ));
split_cols = {"Depth", "Drag"};
nonsplit_cols = {"uS", "psi"};
for (i = 1, i <= nitems(split_cols), i++,
inn_col = "Inner " || split_cols[i];
out_col = "Outer " || split_cols[i];
dtt << new column(inn_col, Numeric, "Continuous", Format( "Best", 12 ));
dtt << new column(out_col, Numeric, "Continuous", Format( "Best", 12 ));
);
for (i = 1, i <= nitems(nonsplit_cols), i++,
one_col = nonsplit_cols[i];
dtt << new column(one_col, Numeric, "Continuous", Format( "Best", 12 ));
);
dtt << Add Rows( nr/2 );
k = 0;
for (i = 1, i <= nr, i+=2,
k++;
for (m = 1, m <= nitems(split_cols), m++,
one_col = split_cols[m];
inn_col = "Inner " || split_cols[m];
out_col = "Outer " || split_cols[m];
column(dtt, inn_col)[k] = column(dt, one_col)[i];
column(dtt, out_col)[k] = column(dt, one_col)[i+1];
);
column(dtt, "Tire ID")[k] = column(dt, "Tire ID")[i];
for (m = 1, m <= nitems(nonsplit_cols), m++,
one_col = nonsplit_cols[m];
column(dtt, one_col)[k] = column(dt, one_col)[i];
);
);