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.