두 테이블의 날짜 사이를 검색하면 암살자 값이 하나에서 바깥쪽으로 추가됩니다.안녕하세요!
하나의 테이블에서 바깥 쪽 테이블로 값을 할당하는 데 도움이 필요합니다.
내 방아쇠는 데이트 야.
dtP의 날짜가 dtC와 1 시간 이상 같으면 dtC : chart_value의 값을 dtC의 새 열 (PC_TA)에 할당해야합니다.
어떤 도움을 주시면 감사하겠습니다.
테이블 열

내 코드 - 모든 값을 0으로 지정하지 않고 마지막 줄을 처리하지 않습니다. (
dtC = open ("....");
dtP = open ("....");
hr = 3600;
dtC << new column ( "PC_TA", numaric,continuous,format( "Best",8),);
for (i=1, i for (j=1, j if ( dtC:start_date[i] >= dtP:action_date[j] >= dtC:start_date[i] + hr,
dtC:PC_TA[i] = dtP:chart_value[j],
dtC:PC_TA[i] =0
);
);
);
다시 : 두 테이블의 날짜 사이에 검색은 외부에서 암살자 값을 추가합니다.고마워, 우디.
그래서 hour ()를 사용하고 싶다면 아마도 day ()와 month ()를 추가해야 할 것입니다. 왜냐하면 데이터가 30 일 뒤로 돌아 왔고 1 시간 내에 값을 할당하는 데 관심이 있습니다. 흐림 설명을 유감스럽게 생각합니다. 하지만 IP 때문에 데이터 표를 너무 많이 공유 할 수는 없습니다.
그러나 내가 성취하고자하는 바람직한 이론적 인 예를 들려 줄 수 있습니다.
dtC의 ID 열은 판매원 (여러 행으로 반복 될 수 있음)이고 시작 날짜 열은 쇼핑몰에서 방문하는 날짜입니다.
dtP와 마찬가지로 chart_value 열은 쇼핑몰에서 임의의 시간 (action_date)의 판매 평균입니다.
어떤 세일즈맨이 쇼핑몰 인감을 가장 많이 늘리는 지 확인하고 쇼핑몰 방문시 한 시간 내에 세일즈맨에게 평균 판매액을 할당합니다. 도움이되는 희망.
내가 if () 좋은 1 또는 0을 나는 그것을 테스트 할 때 어떤 이유로 (어쩌면 날짜 형식) 거기에 0 (내가 알기 론 날짜를 참조하십시오) 찾고 있어요 믿습니다 조건을 충족시키고있다).
다시 : 두 테이블의 날짜 사이에 검색은 외부에서 암살자 값을 추가합니다.나는 첫 번째도 뒤집을 필요가 있다고 생각한다.
if ()는 좋다.
다시 : 두 테이블의 날짜 사이에 검색은 외부에서 암살자 값을 추가합니다. @AdamChoen ,
정말로. hour () 함수는 타임 스탬프의 시간을 가져 오므로 (1-24) 사이의 값을 반환합니다.
아래의 하이라이트 된 라인은 잘못되었습니다. 나는 당신의 설명에서 당신이하고 싶은 것을 이해하지 못한다. 그러나 당신이 2 가지 논리 조건을 검사한다면,이 조건들을 결합하는 논리적 인 operartor가 필요할 것이다.

다시 : 두 테이블의 날짜 사이에 검색은 외부에서 암살자 값을 추가합니다.모두에게 감사합니다.
나는 대본을 수정했다.
if ()는 dtP에서 날짜를 찾고 dtC 날짜에서 최대 1 시간이며 할당 된 값의 합계를 구합니다.
hr = 3600;
dtC << new column ( "PC_TA", numaric,continuous,format( "Best",8),);
for (i=1, i <= Nrow(dtC), i++,
for (r=1, j <= Nrow(dtP), r++,
if ( dtC:start_date[i] <= dtP:action_date[r] <= dtC:start_date[i] + hr,
dtC:PC_TA[i] = dtC:PC_TA[i] + dtP:chart_value[r]
);
);
);여전히 PC_TA 열이 모두 비어 있습니다.
@ uday_guntupalli
두 테이블에서 첫 번째 행을 가져 와서 ~ 49 시간 ~ 176400 초를 얻는다고 가정합니다.
시간 () 함수와 나는 22를 얻는다.
dtP:action_date[1] - dtC:start_date[1];
/*:
-177221
hour(dtP:action_date[1]) - hour(dtC:start_date[1]);
/*:
22
다시 : 두 테이블의 날짜 사이에 검색은 외부에서 암살자 값을 추가합니다. @AdamChoen ,
관찰과 제안의 부부 :
1. "j"를 루프 변수로 사용하지 마십시오. JMP에는 내장 함수 "J"가 있으며 "j"를 변수로 사용하지 않는 것이 좋습니다.
2. if 조건에 문제가있는 것 같습니다.
일반적으로 if 조건은 아래에있는 것과 유사해야하지만 if 연산자에는 1 개의 완전한 조건과 1 개의 불완전한 조건이 논리 연산자없이 연결됩니다.
dtC = data table ("cycles");
dtP = data table ("74_edt_PC");
hr = 3600;
dtC << new column ( "PC_TA", numaric,continuous,format( "Best",8),);
For( i = 1, i < N Row( dtC ), i++,
For( r = 1, r < N Row( dtP ), r++,
If( dtC:start_date[i] >= dtP:action_date[r],
dtC:PC_TA[i] = dtP:chart_value[r],
dtC:PC_TA[i] = 0
)
)
);예를 들어 2 타임 스탬프의 시간을 비교하려면 다음을 고려해야합니다.
dtC = data table ("cycles");
dtP = data table ("74_edt_PC");
hr = 3600;
dtC << new column ( "PC_TA", numaric,continuous,format( "Best",8),);
For( i = 1, i < N Row( dtC ), i++,
For( r = 1, r < N Row( dtP ), r++,
If( hour(dtC:start_date[i]) >= hour(dtP:action_date[r]),
dtC:PC_TA[i] = dtP:chart_value[r],
dtC:PC_TA[i] = 0
)
)
);
다시 : 두 테이블의 날짜 사이에 검색은 외부에서 암살자 값을 추가합니다.나는 당신이 당신의 If () 문 논리가 약간 떨어져 있다고 믿는다. 두 번째 비교는 Start_Date에 1 시간을 더한 값보다 작거나 같아야합니다.
If( dtC:start_date[i] >= dtP:action_date[j] <= dtC:start_date[i] + hr,
dtC:PC_TA[i] = dtP:chart_value[j],
0
);