proc iml: Wie lösche ich Spalten einer Datenmatrix? · PDF fileStartseite › Foren...

2

Click here to load reader

Transcript of proc iml: Wie lösche ich Spalten einer Datenmatrix? · PDF fileStartseite › Foren...

Page 1: proc iml: Wie lösche ich Spalten einer Datenmatrix? · PDF fileStartseite › Foren › Allgemeine Fragen zu SAS 29 November, 2006 - 14:04 — DanielCzech Hallo Forum, wie man meinem

Startseite › Foren › Allgemeine Fragen zu SAS

29 November, 2006 - 14:04 — DanielCzech

Hallo Forum,

wie man meinem Betreff entnehmen kann, versuche ich verzweifelt Spalten einer Datenmatrix zulöschen. Gegenteiliges ist überhaupt kein Problem, aber ich möchte halt Spalten löschen und nichtbeibehalten.

Wenn ich folgenden SAS-Code eingebe:

matrix = repeat({1 2 3 4 5},5); print matrix;

So erhalte ich folgendes Ergebnis :

1 2 3 4 51 2 3 4 51 2 3 4 51 2 3 4 51 2 3 4 5

Wie kann ich beispielsweise die zweite Spalte löschen? Interessant ist auch ob sich Spalte 2 und 4gleichzeitig löschen lassen.

Schöne GrüßeDaniel Czech

Foren: Allgemeine Fragen zu SAS

Log in or register to post comments

proc iml: Wie lösche ich Spalten einer Datenmatrix?

29 November, 2006 - 16:02 — MartinHaffnerNeu aufbauenHallo Daniel,

löschen geht nicht, du musst die Matrix neu aufbauen (d.h. Spalte 1 und Spalten 3-5 der altenMatrix zu einer neuen konkatenieren, wenn du Spalte 2 löschen willst).

In deinem Beispiel:

PROC IML; matrix = repeat({1 2 3 4 5},5); matrix = matrix[,1] || matrix[,3:5]; print matrix;QUIT;

News Artikel Foren Projekte Links Über Redscope

Join List Random Previous Next

Page 2: proc iml: Wie lösche ich Spalten einer Datenmatrix? · PDF fileStartseite › Foren › Allgemeine Fragen zu SAS 29 November, 2006 - 14:04 — DanielCzech Hallo Forum, wie man meinem

1 December, 2006 - 10:43 — Jobst Heitzig

4 December, 2006 - 14:32 — DanielCzech

Funktioniert auch mit Zeilen:

PROC IML; matrix = repeat({1, 2, 3, 4, 5},1,5); matrix = matrix[1,] // matrix[3:5,]; print matrix;QUIT;

Gruß- MH -

Log in or register to post comments

Etwas effizienterEtwas effizienter ist es, mit einem Vektor von (Spalten-)Indizes zu arbeiten:

PROC IML; matrix = repeat({1 2 3 4 5},5); meine_spalten = 1||(3:5); matrix2 = matrix[,meine_spalten]; print matrix meine_spalten matrix2;QUIT;

Log in or register to post comments

Löschen ja, aber...In meinem ersten Beitrag ging es mir nur darum herauszufinden, ob es in SAS/IML dieMöglichkeit gibt auf einfache Art und Weise irgendwelche Spalten zu löschen, z.B. mit deleteoder ähnliches. Mein Problem war, dass ich jedoch ganz bestimmte Spalten löschen musste,die nur aus Nullen bestanden und anschließend eine neue Matrix erzeugt wird, die die Null-Spalten nicht berücksichtigt. Hier ist meine Lösung:

proc iml; x = repeat({0 0 31 0 48 0 59},5); x[5,1] = 23; x[2,5] = 0; y = loc((x[+,])>0); ergebnis = x[,y]; print ergebnis;

Falls die Umsetzung noch einfacher zu realisieren ist, dann zögert nicht diese mir mitzuteilen.

Log in or register to post comments