Betreff: Werte abgleichen und codierenHier ist eine Möglichkeit, Ihre erste Frage zu lösen. Ich verwende Matrixoperationen, um die Anzahl der Vergleiche zu verringern, die Sie durchführen müssten, wenn Sie jede Spalte für jede Zeile abwärts marschieren und für jede Zelle einen Vergleich durchführen würden. Andere haben möglicherweise bessere Möglichkeiten, dies zu tun:
Names Default To Here( 1 );
dt = New Table( "Example",
Add Rows( 2 ),
New Column( "Jan", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [11111, 33333] ) ),
New Column( "Feb", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [22222, 33333] ) ),
New Column( "March", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [11111, 44444] ) ),
New Column( "April", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [11111, 55555] ) ),
New Column( "May", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [11111, 11111] ) ),
New Column( "June", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [22222, 33333] ) ),
New Column( "July", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [11111, 22222] ) ),
New Column( "August",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [22222, 11111] ),
Set Display Width( 51 )
)
);
For( k = 1, k <= N Rows( dt ), k++,
theRow = dt[k, 0];
compare = theRow[1];
theRow = theRow - compare;
theLoc = Loc( theRow );
theRow = theRow + 1;
For( i = 1, i <= N Rows( theLoc ), i++,
theRow[theLoc[i]] = 0
);
theRow[1] = compare;
dt[k, 0] = theRow;
);
Bezüglich Ihrer zweiten Frage bin ich etwas verwirrt darüber, wovon Sie sprechen. Könnten Sie bitte ein einfaches Beispiel dafür zeigen, wie Ihre Daten jetzt aussehen und wie sie enden sollen?
Betreff: Werte abgleichen und codierenherzlich willkommen @ Apurva14
Schauen Sie sich diese Lösung an.
Bitte lassen Sie uns wissen, ob es in die richtige Richtung geht
New Table( "Untitled",
Add Rows( 4 ),
New Column( "Jan",
Set Values( [11111, 33333, 44444, 55555] )
),
New Column( "Feb ",
Set Values( [22222, 33333, 11111, 55555] )
),
New Column( "March",
Set Values( [11111, 44444, 22222, 11111] )
),
New Column( "April ",
Set Values( [11111, 55555, 33333, 33333] )
),
New Column( "May ",
Set Values( [11111, 11111, 44444, 55555] )
),
New Column( "June",
Set Values( [22222, 33333, 44444, 55555] )
),
New Column( "July ",
Set Values( [11111, 22222, 22211, 55555] )
),
New Column( "August",
Set Values( [22222, 1111, 44444, 22222] )
)
);
// here is where the work starts
dt = Current Data Table();
cols = dt << get column names( string );
ncols = N Items( cols );
For( i = 1, i <= ncols, i++,
Eval( Parse( "dt << new column (cols[i+1], Formula(" || Char( cols[1] ) || " ==" || Char( cols[i + 1] ) ) )
);
Beste,
Ron
Betreff: Werte abgleichen und codierenIn Bezug auf Ihre zweite Frage versuchen Sie Folgendes:
New Table( "Untitled",
Add Rows( 4 ),
New Column( "Jan", Set Values( [11111, 33333, 44444, 55555] ) ),
New Column( "Feb ", Set Values( [22222, 33333, 11111, 55555] ) ),
New Column( "March", Set Values( [11111, 44444, 22222, 11111] ) ),
New Column( "April ", Set Values( [11111, 55555, 33333, 33333] ) ),
New Column( "May ", Set Values( [11111, 11111, 44444, 55555] ) ),
New Column( "June", Set Values( [22222, 33333, 44444, 55555] ) ),
New Column( "July ", Set Values( [11111, 22222, 22211, 55555] ) ),
New Column( "August", Set Values( [22222, 1111, 44444, 22222] ) )
);
// here is where the work starts
dt = Current Data Table();
dt2 = dt << Stack(
columns( :Jan, :Feb, :March, :April, :May, :June, :July, :August ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);
dt3 = dt2 << Summary(
Group( :Data ),
Freq( "None" ),
Weight( "None" )
);
dt2 << Update(
With( dt3 ),
Match Columns( :Data = :Data )
);
dt3 << close window (no save);
dt2 << Sort( By( :N Rows ), Order( Ascending ) , replace table);
// at this point the unique values should be at the top of the table
Beste,
Ron
Werte abgleichen und codierenDaher habe ich viele gleiche Werte (z. B. -12345) in mehreren Spalten pro Monat. Ich wollte die Werte in der ersten Spalte als Zahlen behalten und den Rest, falls vorhanden oder nicht vorhanden, als 0 und 1 codieren.
Eine weitere Sache über die Daten, die ich habe, ist, dass einige Werte eindeutig sind, aber nicht in der ersten Spalte enthalten sind, wie man sie übereinander stapeln und trotzdem monatlich codieren kann.
So sehen meine Daten aus
Jan Feb März April Mai Juni Juli August 11111 22222 11111 11111 11111 22222 11111 22222 33333 33333 44444 55555 11111 33333 22222 1111 und so weiter
sagen Sie zum Beispiel
111111 0 1 1 0 1 0Ich möchte, dass es so aussieht !!
Jede Hilfe ist @staff dankbar