여러분 모두에게,
ID, 최종 검사 데이터, 최종 검사 결정 열이 포함된 데이터 테이블이 있습니다. 연관 분석에 사용되는 하나의 열(스택)을 갖기 위해 마지막 검사 데이터 열과 마지막 검사 결정을 결합하고 싶습니다. 예를 들어 내 데이터 구조의 한 클러스터는 다음과 같습니다.
ID 최종 검사 결정 최종 검사 데이터
101 제품 사양 결함
101 CGMP 편차
101 21 CFR 211.113
101 VAI LIQ_US
마지막 검사 결정(이 경우 VAI)을 마지막 검사 데이터 열 아래로 이동하고 동일한 ID(이 경우 101)를 가진 새 행을 생성하고 싶습니다. 따라서 누적된 데이터는 다음과 같아야 합니다.
ID 최종 검사 데이터
101 제품 사양 결함
101 CGMP 편차
101 21 CFR 211.113
101 LIQ_US
101 VAI
또한 이러한 ID 중 일부는 반복되지만 하나 이상의 최종 검사 데이터에서 다른 값을 갖습니다. 예를 들어 Lab DEFECT는 동일한 ID에 대해 또 다른 문제가 될 수 있으므로 이러한 값이 이전 값과 다를 때마다 또 다른 행 클러스터를 만듭니다.
ID 최종 검사 결정 최종 검사 데이터
101 연구실 결함
101 CGMP 편차
101 21 CFR 211.113
101 VAI LIQ_US
미리 도움을 주셔서 진심으로 감사드립니다.
최상의,
카이스
내가 올바르게 이해했는지 잘 모르겠지만 여기에 대안이 있습니다. 원하는 것이면 확장성이 얼마나 좋은지도 확인해야 합니다.
NamesDefaultToHere(1);
// Example table . . .
dt = New Table( "Inspection",
Add Rows( 10 ),
New Column( "ID",
Character,
"Nominal",
Set Values(
{"101", "101", "101", "101", "102", "102", "102", "101", "101", "101"}
)
),
New Column( "Last Inspection Decision",
Character,
"Nominal",
Set Values( {"", "", "", "VAI", "", "", "Code 1", "", "", "Code 2"} )
),
New Column( "Last Inspection Data",
Character,
"Nominal",
Set Values(
{"PRODUCT SPECIFICATIONS DEFECT", "CGMP Deviations", "21 CFR 211.113",
"LIQ_US", "PRODUCT SPECIFICATIONS DEFECT", "21 CFR 211.113", "LIQ_US",
"PRODUCT SPECIFICATIONS DEFECT", "CGMP Deviations", "21 CFR 211.113"}
)
)
);
// Copy the table
dt2 = Eval(dt << getScript);
dt2 << setName(dt << getName ||" Stacked");
// Get the values from the two columns of interest into lists
ids = Column(dt2, "ID") << getValues;
vals = Column(dt2, "Last Inspection Data") << getValues;
// Find out where we need to insert new values, get the required values, and insert them into the right positions
insertAfter = dt2 << getRowsWhere(!IsMissing(:Last Inspection Decision));
for(r=1, r<= NItems(insertAfter), r++,
InsertInto(ids, Column(dt2, "ID")[insertAfter[r]], insertAfter[r] + r);
InsertInto(vals, Column(dt2, "Last Inspection Decision")[insertAfter[r]], insertAfter[r] + r);
);
// Add rows to teh copy of the table, insert the column values, and delete the column we don't need
dt2 << addRows(NRows(insertAfter));
Column(dt2, "ID") << setValues(ids);
Column(dt2, "Last Inspection Data") << setValues(vals);
dt2 << deleteColumns(:Last Inspection Decision);
안녕,
행이 100,000개가 넘으므로 작동하지 않습니다. 데이터를 각각 거의 35,000개의 행으로 구성된 세 부분으로 나누려고 했지만 작동하지 않습니다. 어떠한 제안?
최상의,
카이스
이것은 가장 강력한 솔루션은 아니지만 시도해 보십시오.
dt = current data table ();
for each row( if(!is missing (:Last Inspection Decision),
dt << add rows(1, row()),
is missing (:Last Inspection Data), :Last Inspection Data[row()] = :Last Inspection Decision[row()-1])
);