테이블 결합의 특별한 경우모든,
나는 해결해야 할 특정 문제가 있으며, 수동으로 원본 데이터의 작은 하위 집합에서이를 성공적으로 해결했지만 전체 거대한 데이터 집합에이 작업을 수행 할 수는 없습니다.
그래서 여기에 문제가 있습니다. 나는 두 개의 테이블을 가지고있다.
첫 번째 표 - 일부 도구 세트에서 수행 된 일부 측정
| 수단 | 날짜 | 측정 |
A001 | 2011 년 1 월 1 일 | 0.005 |
| B006 | 2014 년 2 월 2 일 | 0.003 |
두 번째 테이블 - 동일한 도구에 대한 부품 교체 내역 :
| 수단 | 날짜 | 부분 S / N |
| A001 | 2016 년 1 월 1 일 | 1234567 |
| B006 | 2016 년 2 월 2 일 | 0987654 |
| A001 | 2014 년 12 월 29 일 | 1234568 |
내가보고 싶은 것은, 각 공구의 측정치가 설치된 부품 수명에 달려있는 것입니다. 결과 테이블로 필요한 것은 측정이있는 동일한 테이블이며 몇 개의 추가 된 열만 있습니다.
| 수단 | 날짜 | 측정 | 설치된 부분 | 설치 날짜 | 부분의 연령 |
A001 | 2011 년 1 월 1 일 | 0.005 | 1234568 | 2014 년 12 월 29 일 | 4 일 |
| B006 | 2014 년 2 월 2 일 | 0.003 | 0987654 | 2014 년 12 월 29 일 | 365 일 |
기본적으로 필자는이 도구를 수동으로 하나의 도구로 만들었습니다. 단지 열을 만들어 귀로 채 웠습니다. 그런 다음 다음 설치일까지 측정 테이블을 아래로 내려갔습니다. 그리고 거기에서 새 설치 날짜로 끝까지 같은 열을 채운 다음 추가로 이동했습니다 .... 지루한.
나는 어떻게 든 그것을 자동화 할 필요가있다. 그러나 나는 그것의 주위에 나의 머리를 감쌀 시작할조차 수 없다.
따라서 측정 테이블의 각 줄마다 부품 교체 테이블에서 일치하는 도구가있는 라인을 찾아야하며 고려중인 라인의 날짜보다 이전에 설치 날짜가 있습니다. 그런 다음 일련 번호 (해당 날짜)를 가져 와서 측정 테이블에 넣어야합니다. 그렇다면 부분적으로 나이를 계산하는 것이 쉽습니다. 설치 날짜 중 일부는 너무 오래 전부터이 두 테이블에서 다루지 않았기 때문에 많은 누락 된 값이있을 수 있습니다.
누군가가 방법론을 가르쳐 주었고 스크립트를 시작하는 데 약간의 도움이 될 수 있습니까?
고마워요!
제목 : Re : 테이블 결합의 특정 경우이안,
그게 틀림 없습니까?
Loc(replacedOn[rowsForThisTool] == latestReplacementDate);
올바른 문법입니까?
나는 당신이 여기에서하고 싶은 것을 얻는다는 것을 의미한다. 그러나 그것은 나에게 에러를 준다. 그리고 syntaxis 도움은 그것이 Loc (x, y) 일 수 있다고 말한다. - x에서 y와 같은 모든 인덱스를 준다. 논리 명령문이 아니라 동등한 것입니다. 어떤 생각이든이 문장을 다시 쓰는 방법?
감사!
제목 : Re : 테이블 결합의 특정 경우이안,
이런 식으로 생각하니?
currentReplacementDate = Max(replacedOn[rowsForThisTool]<thisDate);
thisDate가 thisTool과 유사하다 :
thisDate = currentMeasDate[t];
currentMeasDate는 측정 테이블의 날짜입니다.
이제이 두 테이블은 서로 다른 시스템에서 만들어지기 때문에 날짜 형식이 다릅니다 (y / m / d와 m / d / yhh : mm : ss 또는 그와 비슷한 것). 어떻게 든 번역 할 필요가 있습니까, 아니면 자동으로 수행됩니까?
제목 : Re : 테이블 결합의 특정 경우이안,
그런 상세한 답변을 해주셔서 감사드립니다.
이것에 대한 간단한 질문 :
latestReplacementDate = Max(replacedOn[rowsForThisTool]);
부품 교체는 측정이 완료되면 정기적으로 수행됩니다. 따라서 최신을 찾을 필요가 없으며, 측정 중에 공구에 있던 부분을 찾아야합니다. 간단하지 않은 최신 기능은 작동하지 않습니다. 기본적으로 측정 날짜가 repplacedOn 날짜보다 큰 최신 대체 날짜를 찾아야합니다. 가장 효율적이고 우아한 방법으로 그것을하는 방법에 대한 제안? 매월 부품 교체가있는 수십 개의 도구에 대해 수년간의 일일 데이터를 보유하고 있으므로 효율성을 높이는 것이 좋습니다. 지금까지는 날짜를 하나씩 비교하는 또 다른 루프를 생각해 낼 수 있습니다.
바로 당신이 마음에서 더 우아한 해결책을 가지고 있다면, 나는 이것을 매우 고맙게 생각할 것입니다.
제목 : Re : 테이블 결합의 특정 경우다음과 같이 시도해 볼 수 있습니다.
NamesDefaultToHere(1);
dt1 = DataTable("Measurements On Tools");
dt2 = DataTable("Parts Replaced");
// Get a list of the tools on which measurements were made
toolsUsed = Column(dt1, "Tool") << getValues;
// Get a list of the tools which had one or more parts replaced
toolsWithReplacedPart = Column(dt2, "Tool") << getValues;
// Get the corresponding replacement dates
replacedOn = Column(dt2, "Date") << getValues;
// And the corresponding part numbers
partSN = Column(dt2, "Part SN") << getValues;
// Make a new vector and a list that will be populated via the loop below
dates = J(NRow(dt1), 1, .);
parts = {};
// Loop over each measurement made
for(t=1, t<=NItems(toolsUsed), t++,
thisTool = toolsUsed[t];
// Find the rows in dt2 in which this tool is referenced
rowsForThisTool = Loc(toolsWithReplacedPart, thisTool);
// Find the latest date on which a part was replaced and store it
latestReplacementDate = Max(replacedOn[rowsForThisTool]);
dates[t] = latestReplacementDate;
// Identify the new part used and store it
rowForLatestPart = Loc(replacedOn[rowsForThisTool] == latestReplacementDate);
newPart = partSN[rowsForThisTool][rowForLatestPart];
InsertInto(parts, newPart);
);
// Add the new columns to dt1
dt1 << newColumn("Last Installed Part", Character, Values(parts));
dt1 << newColumn("Installed Date", Numeric, Continuous, Values(dates), Format( "m/d/y", 12 ));
dt1 << New Column( "Age of Part", Numeric, Continuous, Format( ":day:hr:m", 14 ), Formula( :Date - :Installed Date ));
이 코드는 사용 된 논리를 보여주기 위해 자세하게 설명합니다. 이 테스트에는 아무런 테스트가 없었으며 훨씬 향상 될 수 있습니다. 예를 들어 '<< getValues ()'는 필요하지 않습니다 (JMP 13 이상).
제목 : Re : 테이블 결합의 특정 경우그것이 바로 내가 한 일입니다. 내가 게시 할 때까지 잘 보였다.
제목 : Re : 테이블 결합의 특정 경우표 아이콘을 클릭하여 표를 삽입 할 수 있습니다.
| 11 |
44 |
222 |
| 333 |
444 |
66 |
| 88 |
55 |
99 |
제목 : Re : 테이블 결합의 특정 경우그건 그렇고, 못생긴 테이블 미안해 - 편집 창에서 그들은 괜찮아 보였다. 테이블을 읽기 쉽도록 편집 주제로 돌아갈 방법이 없습니다. 심지어 가능할까요?
감사!