열의 그룹을 기반으로 숫자를 만드는 방법안녕,
동일한 문자열 순서를 임의로 반복한 범주형 열이 있습니다. 그림의 예와 같이 동일한 문자열을 가진 각 그룹에 번호를 지정하고 싶습니다. 결과 열을 만들려면 어떻게 해야 합니까?

자동화 및 스크립팅Re: 열의 그룹을 기준으로 숫자를 만드는 방법"recode new colum"을 사용하는 것은 어떻습니까?

스크립트:
// New data table
// → Data Table( "Untitled" )
New Table( "Untitled" );
// Recode column: result
Local( {dt, col1},
dt = Data Table( "Untitled" );
dt << Begin Data Update;
col1 = dt << New Column( dt:Column 1 );
col1 << Set Name( "result" );
dt << Move Selected Columns( {col1}, after( dt:Column 1 ) );
dt << Recode Column(
dt:Column 1,
{Map Value(
_rcOrig,
{"aaa", "1", "bb", "2", "ccc", "3", "ddd", "4", "eee", "5"},
Unmatched( _rcNow )
)},
Update Properties( 1 ),
Target Column( col1 )
);
dt << End Data Update;
);Re: 열의 그룹을 기준으로 숫자를 만드는 방법나는 매일 새로운 데이터를 수집하고 있으며 많은 새로운 문자열을 갖게 될 것입니다. recode new column을 사용하여 하드 코딩하는 것보다 더 나은 방법이 필요합니다.
Re: 열의 그룹을 기준으로 숫자를 만드는 방법원하는 열 유형과 수행하려는 스크립팅의 양에 따라 몇 가지 옵션이 있습니다. 아래는 작동할 수 있는 옵션 중 하나입니다.
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(9),
Compress File When Saved(1),
New Column("Column 1",
Character,
"Nominal",
Set Values({"aa", "bb", "cc", "aa", "bb", "cc", "aa", "bb", "cc"})
)
);
dt << New Column("col", Numeric, Ordinal, << Set Each Value(
vals = As Constant(Associative Array(:Column 1 << get values) << get keys);
Contains(vals, :Column 1)
));Re: 열의 그룹을 기준으로 숫자를 만드는 방법안녕,
다음은 ID 목록에 숫자 ID를 할당하는 못생긴 접근 방식입니다.
Col Rank( :Column1, <<TIE></TIE>
문제는 이러한 고유 ID가 1씩 증가하여 생성되지 않는다는 것입니다.
나는 여전히 더 나은 방법을 연구하고 있지만 이것이 시작될 수 있습니다.
최상의.
TS
Re: 열의 그룹을 기준으로 숫자를 만드는 방법안녕 다시,
확인했습니다(아래 참조).
aa = Associative Array( :GROUP );
kk = Associative Array( :GROUP ) << Get Keys;
For( i = 1, i <= N Items( kk ), i++,
aa[kk[i]] = i
);
aa[:GROUP];
귀하의 응용 프로그램에 효과가 있기를 바랍니다.
최상의,
TS
Re: 열의 그룹을 기준으로 숫자를 만드는 방법이를 수행하는 또 다른 방법이 있습니다.
이렇게 하면 테이블 요약이 생성되고 각 고유 값에 번호가 부여됩니다. 기본적으로 이것은 오름차순으로 수행되지만 내림차순 또는 원하는 다른 순서일 수 있습니다.
번호 매기기의 현재 공식은 원하는 대로 다른 단위 또는 증분에 대해 더 정교해질 수도 있습니다.
메뉴의 버튼을 클릭하여 모든 단계를 수행할 수도 있습니다.
작동하는지 알려주세요.
// create data table to work with
dt1 = New Table( "Untitled", Add Rows( 11 ),
New Column( "Column 1", Character, "Nominal",
Set Values({"aaa", "bb", "ccc", "aaa", "ddd", "eee", "ccc", "bb", "bb", "ccc", "aaa"})
)
);
// start working
// Data table summary
dt2 = dt1 << Summary( Group( :Column 1 ), Freq( "None" ), Weight( "None" ), Link to original data table( 0 ));
// Delete column: N Rows
dt2 << Delete Columns( :N Rows );
// New column: result
dt2 << New Column( "result", Numeric, "Continuous", Format( "Best", 12 ),Formula( Row() ));
// Delete column formula: result
dt2:result << Delete Formula;
// Update data tables
dt1 << Update(
With( Data Table( dt2 ) ),
Match Columns( :Column 1 = :Column 1 ),
Replace Columns in Main Table( None )
);
// Close Data Table: Untitled By (Column 1)
Close( dt2, no save );