Top-10-Werte in vielen SpaltenIch habe eine Datentabelle mit einigen tausend Spalten. Ich suche nach der obersten „X“-Anzahl der Werte in diesen Spalten anhand einer anderen Variablen. Ich möchte zum Beispiel wissen, welche Spalten die 10 höchsten Werte haben, wenn eine andere Spalte den Wert „Large-Cap-Aktien“ hat.
Automatisierung und SkripterstellungDatenexploration und -visualisierungWindowsBetreff: Top-10-Werte in vielen SpaltenOhne eine Vorstellung von Ihren Daten zu haben, ist es möglicherweise am einfachsten, zunächst Ihre Daten zu stapeln und dann die zehn wichtigsten Werte auszuwählen.
Betreff: Top-10-Werte in vielen SpaltenIch habe ein Beispiel eines kleinen Satzes meiner Daten angehängt.
Betreff: Top-10-Werte in vielen SpaltenHier ist eine Möglichkeit, dies mit nur einer Spalte zu tun. Sie könnten dies für jede Ihrer Spalten in eine Schleife einfügen. Dieser Beitrag hat mehr Hintergrund.
/*JMP STATISTICAL DISCOVERY LLC (“JMP”) PERMITS THE USE OF THIS COMPUTER SOFTWARE CODE (“CODE”) ON AN AS-IS BASIS AND AUTHORIZES YOU TO USE THE CODE SUBJECT TO THE TERMS LISTED HEREIN. BY USING THE CODE, YOU AGREE TO THESE TERMS. YOUR USE OF THE CODE IS AT YOUR OWN RISK. JMP MAKES NO REPRESENTATION OR WARRANTY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRIGEMENT, AND TITLE, WITH RESPECT TO THE CODE.
You may use the Code solely as part of a software product you currently have licensed from JMP, JMP’s parent company SAS Institute Inc. (“SAS”), or one of JMP’s or SAS’s subsidiaries or authorized agents (the “Software”), and not for any other purpose. The Code is designed to add functionality to the Software but has not necessarily been tested. Accordingly, JMP makes no representation or warranty that the Code will operate error-free. JMP is under no obligation to maintain, support, or continue to distribute the Code.
Neither JMP nor its licensors shall be liable to you or any third-party for any general, special, direct, indirect, consequential, incidental, or other damages whatsoever arising out of or related to your use or inability to use the Code, even if JMP has been advised of the possibility of such damages. Except as otherwise provided above, the Code is governed by the same agreement that governs the Software. If you do not have an existing agreement with JMP or SAS governing the Software, you may not use the Code.
JMP and all other JMP Statistical Discovery LLC product or service names are registered trademarks or trademarks of JMP Statistical Discovery LLC in the USA and other countries. ® indicates USA registration. Other brand and product names are registered trademarks or trademarks of their respective companies.
*/
//init
n = N Rows();
lstCategories = Associative Array( :Stock Type << Get Values ) << Get Keys;
lstRows = {};
dt = Current Data Table();
dt << Clear Column Selection;
dt << Clear Select;
//loop through each category for first column; save top 10 for each category into lstRows
For Each( {i}, lstCategories,
dt << Select Where( :Stock Type != i );
dt << Hide and Exclude;
dt << Clear Select;
dt << select rows( Loc( Ranking( :"Value 1"n[1 :: n] ) >= n - 10 ) );
t = As List( dt << Get Selected Rows );
Show( i );
Show( t );
dt << Clear Row States;
Insert Into( lstRows, t );
);
//do something with the rows
dt << Select Rows( lstRows );
Betreff: Top 10 Werte in vielen SpaltenWow, Loc(Ranking...) ist großartig! Sehr nützlich!
Ich habe gerade die Frage gelesen und mich gefragt,
@dkraeuter_sunne schrieb:
die Spalten mit den 10 höchsten Werten
- für jede Zeile?
Dann könnte es sein
dt = Current Data Table();
nc = N Cols();
Row() = 4;
For Each Row(
If( :Stock Type == "Large Cap Stock",
mx = Max( dt[Row(), 2 :: nc] );
colnumbers = Loc( Ranking( mx - dt[Row(), 2 :: nc] ) <= 10 );
colnames = Transform Each( {col}, As List( colnumbers ), Column( col + 1 ) << get name );
Print( Row(), colnames );
)
);
Ab Spalte 27 fehlen viele Werte. Müssen diese in die Analyse einbezogen werden?