안녕
다양한 ID에 대한 처리 단계 및 처리 시간 표가 있습니다. 그러나 내 프로세스 단계 중 일부는 각 ID에 대한 프로세스에서 두 번 이상 발생합니다. 모든 공정 단계를 "합성" 또는 "처리"로 구분하는 열을 만들고 싶습니다. 이러한 그룹은 다른 프로세스 단계 이전 또는 이후에 발생하는지에 따라 결정됩니다.
나는 수식이 각 ID에 대한 생성 단계의 시간을 찾아 해당 ID에 대한 다른 모든 프로세스 단계 시간과 비교하기를 원합니다.
일종의 루프를 사용하려고 했지만 스크립팅이 처음이어서 루프가 매우 혼란스럽습니다!
이것을 할 수 있는 방법이 있나요???
예를 들어, 제가 가지고 있는 것은 다음과 같으며 카테고리 열을 추가하고 싶습니다.
| ID | 프로세스 단계 | 처리 시간 | 범주 |
| 10 | 건조 | 9:00 | 합성 |
| 10 | 생성됨 | 9:30 | 합성 |
| 10 | 건조 | 10:00 | 처리 |
| 10 | 완성된 | 11:00 | 처리 |
| 11 | 건조 | 2시 | 합성 |
| 11 | 생성됨 | 2:30 | 합성 |
| 11 | 건조 | 2:45 | 처리 |
| 11 | 완성된 | 4시 | 처리 |
| 12 | 건조 | 7:30 | 합성 |
| 12 | 생성됨 | 7:45 | 합성 |
| 12 | 건조 | 8시 | 처리 |
| 12 | 완성된 | 9:00 | 처리 |
어떤 아이디어??
감사합니다!
이 스크립트는 당신이 원하는 것 같습니다. 원한다면 공식으로 바꿀 수도 있습니다.
Names Default To Here( 1 );
dt = New Table( "Untitled 13",
Add Rows( 12 ),
New Column( "ID",
Character,
"Nominal",
Set Values( {"10", "10", "10", "10", "11", "11", "11", "11", "12", "12", "12", "12"} )
),
New Column( "Process Step",
Character( 16 ),
"Nominal",
Set Values(
{"Drying", "Spawned", "Drying", "Finished", "Drying", "Spawned", "Drying", "Finished", "Drying", "Spawned", "Drying",
"Finished"}
)
),
New Column( "Process Time",
Numeric,
"Nominal",
Format( "h:m", 12 ),
Input Format( "h:m" ),
Set Values( [32400, 34200, 36000, 39600, 7200, 9000, 9900, 14400, 27000, 27900, 28800, 32400] )
)
);
dt << New Column( "Category", Character );
For( i = 1, i <= N Rows( dt ), i++,
currID = dt:id[i];
If( i == 1,
spawnTime = dt:Process Time[(dt << get rows where( dt:id == currID & dt:Process Step == "Spawned" ))[1]]
);
If( i > 1,
If( dt:ID[i] != dt:ID[i - 1],
spawnTime = dt:Process Time[(dt << get rows where( dt:id == currID & dt:Process Step == "Spawned" ))[1]]
)
);
If( dt:Process Time[i] <= spawnTime,
dt:Category[i] = "Synthesis",
dt:Category[i] = "Processing";
);
);
스크립트에서는 데이터가 ID별로 정렬되어 있다고 가정합니다. 그러나 데이터를 통해 각 루프에 대해 generateTime이 새로 계산된 경우 테이블을 정렬할 필요가 없습니다. 각 루프에서 SpawnTime을 계산하면 스크립트 속도가 느려지지만 이는 절충안이 될 수 있습니다.