Minitab 22 - If-Funktion des Minitab-Rechners - Was mache ich bei verschiedensprachigen Regionaleinstellungen?
- Erstellt am 6.4.2022
- Überarbeitet am 8.5.2024
- Software: Minitab 22, 21, 20, 19
Es gibt eine Rechnerfunktion If. Für die Eingabespalte kann ich damit zeilenweise eine Fallunterscheidung durchführen. Angenommen, C1 sei gegeben durch
↓ | C1 |
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 5 |
und ich verwende in einem Betriebssystem mit deutschsprachigen Regionaleinstellungen den Befehl
Let C2 = If(C1<=3;"A";"B")
mit Semikolon als Trennzeichen für die Argumente, beziehungsweise in einem Betriebssystem mit englischsprachigen Regionaleinstellungen den Befehl
Let C2 = If(C1<=3,"A","B")
mit Komma als Trennzeichen für die Argumente. Damit erhalte ich die Ausgabe
↓ | C1 | C2-T |
|
|
|
1 | 1 | A |
2 | 2 | A |
3 | 3 | A |
4 | 4 | B |
5 | 5 | B |
Nun habe ich folgende Situation:
Ich will eine Anwendung schreiben, zum Beispiel ein Exec-Makro oder ein Excel-Template zum fernsteuern von Minitab, bei welchem ich diesen Befehl mit den von den Regionaleinstellungen abhängigen Argumenten-Trennzeichen verwenden müsste. Diese Anwendung setzen verschiedene Nutzer in meinem Unternehmen ein, deren Betriebssysteme teilweise deutschsprachige, teilweise englischsprachige Regionaleinstellungen haben. Gibt es einen Ansatz, mit dem ich dies umgehen könnte, indem ich stattessen einen von den Regionaleinstellungen unabhängigen Befehl schreibe?
Erläuterung
In diesem Artikel erläutern wir zwei Lösungsansätze, die Sie ausprobieren könnten.
Ansatz 1: Schreiben des Befehls in ein globales oder lokales Makro
Globale und lokale Minitab-Makros verwenden unabhängig von den Regionaleinstellungen das Komma als Trennzeichen für die Argumente in Rechnerfunktionen. Wenn Sie den Rechnerbefehl
Let C2 = If(C1<=3,"A","B")
in ein globales oder lokales Makro schreiben, können Sie dieses mit dem Befehl % aufrufen. Entweder, jeder Anwender speichert das Makro in den Speicherort für Makros, oder es gibt einen Ordner, der auf jedem der Anwenderrechner vorhanden ist, und Sie rufen das Makro zusammen mit dem Verzeichnis auf.
Ansatz 2: Rechnerfunktion Sign und Minitab-Befehl Convert
Die Funktion Sign ordnet einer reellen Zahl ihr Vorzeichen zu. So würde der Befehl
Let C4000 = C1-3
zum Ergebnis
↓ | C4000 |
1 | -2 |
2 | -1 |
3 | 0 |
4 | 1 |
5 | 2 |
führen, und damit der Befehl
Let C4000 = Sign(C1-3)
zu diesem Ergebnis:
↓ | C4000 |
1 | -1 |
2 | -1 |
3 | 0 |
4 | 1 |
5 | 1 |
Da die beiden Alternativen C1 ≤ 3 und C1 > 3 abgebildet werden, und wir hier alle Werte < 3 auf -1, den Wert 3 selbst aber auf 0 abbilden, müssten wir noch zwei Operationen in der Formel ergänzen.
Let C4000 = Sign(C1-3)-1/2
führt zum Ergebnis
↓ | C4000 |
1 | -1,5 |
2 | -1,5 |
3 | -0,5 |
4 | 0,5 |
5 | 0,5 |
sodass
Let C4000 = Sign(Sign(C1-3)-1/2)
das folgende ergibt:
↓ | C4000 |
1 | -1 |
2 | -1 |
3 | -1 |
4 | 1 |
5 | 1 |
Die Idee ist, allen Zeilen mit Wert -1 den Buchstaben A und allen Zeilen mit Wert 1 den Buchstaben B zuzuordnen. Hier helfen diese Befehlszeilen:
Copy -1 1 C3998.
Copy "A" "B" C3999.
Convert C3998 C3999 C4000 C2;
NoDefault.
Erase C3998-C4000.
Zu diesen Befehlen siehe Kopieren einer Spalte in Konstanten und Neukodieren mit Hilfe einer Umwandlungstabelle sowie Unwiderrufliches Löschen von Spalten, Konstanten oder Matrizen. Jetzt enthält Spalte C2 den Buchstaben A in den Zeilen, in denen C1 ≤ 3, und den Buchstaben B in den Zeilen, in denen C1 > 3 ist.
↓ | C2-T |
1 | A |
2 | A |
3 | A |
4 | B |
5 | B |
Zusammengefasst sind die Befehlszeilen
Let C4000 = Sign(Sign(C1-3)-1/2)
Copy -1 1 C3998.
Copy "A" "B" C3999.
Convert C3998 C3999 C4000 C2;
NoDefault.
Erase C3998-C4000.
|