DMUG-Archiv 2003

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: Pivot-Tabelle 2. Versuch

Hallo,

Thomas Hahn's Antwort hat mir schon erheblich geholfen, ist jedoch noch nicht vollständig, was ich eigentlich suchte, da es Redundanzen in den Datensätzen (z.B. mehrere unterschiedliche Zahlen für ein und die gleiche Kombinationen von Factor und Bedingung) nicht berücksichtigt. In seiner Version geht er davon aus, jeder Kombination steht genau eine Zahl gegenüber. 1)

Apply[ (zahl[#1, #2] = #3)&, liste, 1 ];
zahl[__] = Undefined; 2)

Diesen Unterschied hatte ich in der Tabelle nicht deutlich genug herausgearbeitet. Hier deutlicher:

> FactorA, BedingungA, Zahl,
> FactorB, BedingungA, Zahl,
> FactorC, BedingungB, Zahl,
> FactorB, BedingungB, Zahl1,  !
> FactorB, BedingungB, Zahl2,  !
> ...

Eine mögliche Lösung könnte im Folgenden bestehen,

Apply[ (zahl[#1, #2]=Append[ zahl[#1, #2], #3])&, liste, 1];

jedoch laufe ich dann in die Aufgabe, einen in diesem einfachen Falle doppelten Loop mit der jeweiligen Funktion über die Matrix laufen zu lassen.

Table[Funktion[zahl[factoren[[i]],bedingung[[j]] ], \\
{i, 1, Length[factoren]},{j, 1, Length[bedingung]}]

Mir kommt dieses Vorgehen ein wenig wie Vergewaltigung vor; oder ist das die Lösung?


Dem Angebot nach einer Experimentiertabelle komme ich morgen früh im Geschäft nach. Vielen Dank.

Einen weiteren Punkt, der vieleicht oberflächlich oder auch nur unwissend ist, betrifft die Reduktion auf die vorkommenden Faktoren und Bedingungen. Thomas Hahn verwendet die Funktion

    faktoren = Apply[#1&, liste, 1]//Union

Ist dies gegenüber

    faktoren = Union[liste[[All, 1]] ]

aufgrund interner Mathematica-Abläufe für große Listen effizienter und schneller oder einfach nur ein anderer gleichwertiger Lösungsweg?


Gruß,

Olaf Bürger

Manager Quality Management
Abt. H-VQ
Behr GmbH & Co. KG
http://www.behrgroup.com

Anmerkung 1) zahl[__] sei ohne "Gedächnis",

Anmerkung 2) Für interessant halte ich diesen Ansatz insofern, als das gewisse Funktionen, die wie früher ohne Computerunterstützung üblich sequentiel abgearbeitet wurden, verwendet werden könnten. Dies ist sehr speicherschohnend, sofern sich Mathematica nicht alle Zwischenschritte merkt:
z.B.
zahl[#1,#2]=Max[zahl[#1,#2],#3] ] für die Berechnung des Maximums

Minimum, Summe, Mittelwert, Streuung lassen sich so auch gut berechnen. Jedoch andere Kenngrößen z.B. Median oder t-Statistik sind auf diese Weise nur schwer zu ermitteln. Eine weiteree Schwierigkeit besteht in der Mehrfachausswertung einer Klasse von {Factor, Bedingung}.


---------------------------------------------------------------

Rolf Mertig schrieb:
Hallo,
könnten Sie mir eine (mit Vorliebe realistisch grosse) Liste zum
Experimentieren schicken?

Reicht Thomas Hahn's Antwort?

MfG,

Rolf Mertig

Mertig Consulting
http://www.mertig.com


Ich habe eine lange Liste mit Einträgen etwa der Art:

FactorA, BedingungA, Zahl,
FactorB, BedingungA, Zahl,
FactorC, BedingungB, Zahl,
FactorB, BedingungB, Zahl,
FactorB, BedingungB, Zahl,
...

Es gibt eine endliche Anzahl von Factoren* und von Bedingungen*.
Die Zahlen können beliebige Messwerte annehmen.

Als Auswertung möchte ich eine Matrix erstellen, welche die Faktoren (Zeilen) über die Bedingungen (Spalten) aufträgt.

Als Zusammenfassungsfunktion der Messwerte dienen beispielsweise Summe oder Streuung.

In Excel würde ich eine Pivot-Tabelle erstellen.
Gibt es in Mathematica eine Funkion dafür oder einen eleganten Weg, dies zu erreichen.







Antworten:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html