JSL 쿼리 : 같은 열에서 같은 이름의 행을 찾은 다음 날짜를 비교하고 나중에 날짜를 찾습니다.
안녕 모두,
아래에 데이터 테이블이 있는데 비교하고 싶습니다.
1. SN 열은 먼저 같은 이름 행이 있는지 찾으며,
2. 그런 다음 동일한 이름 행을 비교하여 나중에 "date1"열에있는 행을 찾습니다.
삼. 그런 다음 해당 행을 열 LLR에 "1"로 지정하십시오.
아래의 스크립트를 사용하고 있지만 작동하지 않습니다. 어떻게 디버깅해야할지 모르겠지만 누구든지 배울 수 있습니까?
dt = Current Data Table();
New Column( "LLR");
For( i = 1, i <= N Row( dt ), i++,
SNcol = Column( dt, "SN" )[i];
Datecol = Column( dt, "DATE1" )[i];
For( j = 1, j <= N Row( dt ), j++,
If( Column( dt, "SN" )[j] == SNcol,
Column( dt, "DATE1" )[j]>Column( dt, "DATE1" )[i],"1"
"0")));

재 : JSL 쿼리 : 같은 열에서 같은 이름의 행을 찾은 다음 날짜를 비교하고 나중에 날짜를 찾으십시오.원하는 것을 정확히 모르지만 SN 뒤에 그룹화 된 Col Max () 함수로 열 수식을 시도 할 수 있습니다.
두 가지 예 :
dt = Current Data Table();
// Returns 1 for max DATE of each SN
dt << New Column("LLR", Formula(If(Col Max(:DATE1, :SN) == :DATE1, 1)));
// Returns 1 for max DATE of each replicated SN
dt << New Column("LLR2", Formula(If(Col Max(:DATE1, :SN) == :DATE1 & Col Number(:SN, :SN) > 1, 1)));
재 : JSL 쿼리 : 같은 열에서 같은 이름의 행을 찾은 다음 날짜를 비교하고 나중에 날짜를 찾으십시오.나는 네가 무엇을 요구하고 있는지 정확히 이해하고 있는지 확신하지 못한다. 그러나 제가 가까이에 있다면 다음 코드가 도움이 될 것입니다. JSL로 시작한다면, 어떻게 작동하는지 이해하려면 '도움말> 스크립팅 색인'을 사용하는 것이 좋습니다. 또한이 작업을 수행 할 수있는 방법이 많다는 것을 명심하십시오.이 방법은 다른 것보다 '좋을'수도 아닐 수도 있습니다.
NamesDefaultToHere(1);
// Make a table to play with
dt = New Table( "Mark the Latest Date",
Add Rows( 25 ),
New Column( "Group",
Numeric,
"Nominal",
Format( "Best", 12 ),
Formula(RandomInteger(1, 5))
),
New Column( "DateTime",
Numeric,
"Continuous",
Format( "ddMonyyyy h:m:s", 22, 0 ),
Input Format( "ddMonyyyy h:m:s", 0 ),
Formula( Random Uniform( Today() - In Days( 7 ), Today() ) )
),
);
dt << runFormulas;
Column(dt, "Group") << deleteFormula;
dt << Sort(By(:Group), Replace Table);
// Start Here . . .
gVals = Column(dt, "Group") << getValues; // Values in the 'grouping' column
dtVals = Column(dt, "DateTime") << getValues; // Values in the 'DateTime' column
dt << NewColumn("Is Latest?", Numeric, Nominal, ValueLabels({0 = "No", 1 = "Yes"}), Values(J(NRow(dt), 1, 0))); // New column
// Loop over the groups
for(g=1, g<=Max(gVals), g++,
// Find which row the maximum for the current group is in
dtVals2 = dtVals; // Copy all the values
dtVals2[Loc(gVals != g)] = .; // Set values not corresponding to the current group to missing
r = LocMax(dtVals2); // Get the position (row number) of the maximum of the values that are left
// Overwrite the existing "0" value for this row
Column(dt, "Is Latest?")[r] = 1;
);재 : JSL 쿼리 : 같은 열에서 같은 이름의 행을 찾은 다음 날짜를 비교하고 나중에 날짜를 찾으십시오.여기 테이블이있다.
| SN |
DATE1 |
LLR |
LLR 2 |
| 에이 |
7/29/2017 12:27 |
1 |
|
| 비 |
9/1/2017 9:24 |
1 |
|
| 비 |
9/1/2017 9:25 |
1 |
|
| 기음 |
2011 년 9 월 4 일 19:46 |
1 |
|
| 기음 |
8/31/2017 23:22 |
1 |
|
| 기음 |
9/4/2017 19:27 |
1 |
|