저는 2 백만 개의 레코드 세트에 대해 기본 통계 (Mean, StDev, Range)를 실행하려고했습니다. 캐치는 하나뿐 아니라 두 열을 평균화해야한다는 것입니다. 이것이 가능한가? 각 그룹의 레코드 수는 다양합니다. Tabulate는 Val1과 Val2를 따로 따로 평균화 할 것이고, 나는 그것들을 평균화할 필요가있다. 첨부 된 데이터 테이블은 각 ID를 기준으로 평균 Val1 및 Val2를 가져야합니다.
결과는 다음과 같아야합니다.
신분증 에이 | 평균 2.000 | StDev
0.8944 | 범위
2 |
| 비 | 3.500 | 1.0488
| 삼
|
| 기음 | 2.625 | 1.4079
| 4
|
| 디 | 2.700 | 1.9465
| 5
|
찾고있는 결과를 얻기 위해 사용할 수있는 JSL 코드가 있습니까?
열을 쌓아야합니다. 다음은 일러스트레이션을위한 간단한 스크립트입니다.
Names default to here(1);
dt=New Table( "JMP QUESTION",
Add Rows( 15 ),
New Column( "ID",
Character( 1 ),
"Nominal",
Set Values(
{"A", "A", "A", "B", "B", "B", "C", "C", "C", "C", "D", "D", "D", "D",
"D"}
),
Set Display Width( 57 )
),
New Column( "Val1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 2, 3, 4, 5, 3, 2, 1, 3, 4, 5, 3, 6, 2, 1] ),
Set Display Width( 57 )
),
New Column( "Val2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 3, 2, 4, 3, 2, 1, 2, 5, 3, 1, 2, 5, 1, 1] ),
Set Display Width( 57 )
)
);
// Stack the data
dtStack = dt << Stack(invisible,
columns( :Val1, :Val2 ),
Source Label Column( "Label" ),
Stacked Data Column( "Val 1,2" ),
Name( "Non-stacked columns" )(Keep( :ID ))
);
// Generate the Statistics
dtStack << Tabulate(
Show Control Panel( 0 ),
Add Table(
Column Table( Statistics( Mean ), Analysis Columns( :Name( "Val 1,2" ) ) ),
Column Table(
Statistics( Std Dev ),
Analysis Columns( :Name( "Val 1,2" ) )
),
Column Table( Statistics( Range ), Analysis Columns( :Name( "Val 1,2" ) ) ),
Row Table( Grouping Columns( :ID ) )
)
); @txnelson 그게 내가 필요로하는 것을 얻는다. 안타깝게도 노트북에는 2 백만 행을 처리 할 수있는 리소스가 없지만이를 줄여서 내가 필요한 곳으로 이동할 수 있습니다.
대단히 감사합니다!
2,000,000 개의 모든 행에 대해 실행할 수있는 몇 가지 사항이 있습니다.
1. 데이터를 스태킹 할 때 필요한 열만 쌓아야합니다. 제공된 그림에서 ID 열만 스태킹 열과 함께 이동합니다.
2. 스택 코드에서 "Invisible"을 "Private"으로 변경할 수 있습니다. 이렇게하면 데이터 테이블이 만들어 지지만 Windowing 코드가 생성되지 않으므로이 테이블을 볼 수 없습니다.
삼. 적은 공간에 데이터를 저장하는 열을 압축 할 수 있습니다 (열 속성 목록 검사).