Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Excel2003] Sorteren / gemiddelde van ongelijke kolommen

Pagina: 1
Acties:

  • gambieter
  • Registratie: Oktober 2006
  • Niet online

gambieter

Just me & my cat

Topicstarter
(sorry als de titel wat onduidelijk is, wist niet goed hoe ik het kort kon verwoorden)

Ik ben de laatste weken bezig met de output van een DNA-techniek, de zogenaamde microarray. Dat is een grid van spots/signalen in twee kanalen, die ingescand worden en omgezet worden in een ratio. Het gaat om grids met ongeveer 6000 spots per vergelijking, waarvan de data uit de twee kanalen in een Excel spreadsheet worden opgeslagen. Van de ~2000 features die we willen bestuderen staan er dus gemiddeld 3 spots op per feature, maar sommigen zijn maar tweevoudig vertegenwoordigd, anderen 6-voudig.

Ongesorteerd staan die dan als volgt:
code:
1
2
3
4
5
6
7
ID       F635       F532
Cj0081   1800       1500
Cj1530    640        870
Cj0081   1878        950
Cj1530    930       2010
Cj1530    700       1630
Cj0081   1200       1300

Zonder op de techniek in te willen gaan, maar is er een normalisatie nodig en dat wordt gedaan met een macro. Deze filtert op de een of andere manier via statistiek ook onbetrouwbare signalen eruit, en verwijderd deze datapunten uit de lijst, en sorteert deze.

Nu is het natuurlijk niet altijd dezelfde feature die verwijderd wordt, en als je dan meerdere exprimenten gaat vergelijken, dan krijg je dus allemaal ongelijk lopende kolommen waarbij er dus eigenlijk geen unieke feature is per cel, je hebt alleen de ID om op te sorteren.

Even als voorbeeld een vergelijking van twee experimenten
code:
1
2
3
4
5
6
ID       F635       F532     ID       F635       F532
Cj0081   1800       1500     Cj0081   1200       1530
Cj0081   1878        950     Cj0081   1287        750
Cj0081   1200       1300     Cj1530    999       1214                        
Cj1530    640        870     Cj1530    820        630
Cj1530    930       2010     Cj1530    721       1826

Nu heb ik dus een spreadsheet met kolommen van 6000 minus een 100-tal waarden. Is er een manier om dusdanig te sorteren, dat Excel de ID-cel als sorteerpunt neemt, en als er een ongelijk aantal waarden is van die waarde, er lege cellen bijzet om de sortering in sync te houden? Einddoel is een sortering waardoor je als resultaat krijgt:
code:
1
2
3
4
5
6
7
ID       F635       F532     ID       F635       F532
Cj0081   1800       1500     Cj0081   1200       1530
Cj0081   1878        950     Cj0081   1287        750
Cj0081   1200       1300
Cj1530    640        870     Cj1530    820        630
Cj1530    640        870     Cj1530    820        630
                             Cj1530    721       1826


De tweede vraag is gerelateerd aan deze data. Zoals aangegeven zijn de meeste waarden in drievoud aanwezig, maar sommige waarden in zesvoud. Door de normalisering en kwaliteitscontrole worden er soms waarden uitgehaald, waardoor er tweevoud, viervoud, vijfvoud etc mogelijk is. Kan je een gemiddelde laten berekenen van alle gekoppelde cellen met dezelfde waarde in de ID cel?

Ik heb gezocht naar een oplossing, maar door de algemeenheid van de acties (gemiddelde, sorteren) is het zoeken naar de speld in een hooiberg. De mensen die dit soort werk doen bij ons gebruiken geen Excel, maar een specifiek programma met stapels toeters en bellen waarvoor een meerdaagse cursus noodzakelijk is, en een dongle zodat ik het niet overal kan bewerken. Als Excel het kan, dan zou dat mooi zijn :) .

I had a decent lunch, and I'm feeling quite amiable. That's why you're still alive.


  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

de tweede vraag .. gewoon een pivot/kruistabel

maar waarom wil je lege velden hebben .. met welk doel ?

[ Voor 39% gewijzigd door Fish op 15-03-2008 22:35 ]

Iperf


  • gambieter
  • Registratie: Oktober 2006
  • Niet online

gambieter

Just me & my cat

Topicstarter
fish schreef op zaterdag 15 maart 2008 @ 22:34:
de tweede vraag .. gewoon een pivot/kruistabel

maar waarom wil je lege velden hebben .. met welk doel ?
Die lege velden zijn bedoeld om mijn tweede vraag (provisorisch?) op te lossen, ik heb een template waar de gemiddelden al worden uitgerekend voor de datapunten, en die is gebaseerd op het maximale aantal datapunten.

Pivot/kruistabel, dat ga ik opzoeken :) .

I had a decent lunch, and I'm feeling quite amiable. That's why you're still alive.


  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

http://www.xs4all.nl/~fishbowl/got/Book1.xls

[ Voor 191% gewijzigd door Fish op 15-03-2008 22:48 ]

Iperf


  • gambieter
  • Registratie: Oktober 2006
  • Niet online

gambieter

Just me & my cat

Topicstarter

I had a decent lunch, and I'm feeling quite amiable. That's why you're still alive.


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Tenzij ik je verkeerd begrijp zou ik die tabellen exporteren naar een database, er een experiment ID aan hangen en vervolgens met SQL aan de slag gaan.
Anders gezegd: heb je een speciale reden om ook de verschillende experimenten in aparte kolommen te presenteren en om hoeveel experimenten gaat het dan?

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • gambieter
  • Registratie: Oktober 2006
  • Niet online

gambieter

Just me & my cat

Topicstarter
Lustucru schreef op zondag 16 maart 2008 @ 00:55:
Tenzij ik je verkeerd begrijp zou ik die tabellen exporteren naar een database, er een experiment ID aan hangen en vervolgens met SQL aan de slag gaan.
Anders gezegd: heb je een speciale reden om ook de verschillende experimenten in aparte kolommen te presenteren en om hoeveel experimenten gaat het dan?
Exporteren naar Access zou een optie zijn, maar ik hoop eerlijk gezegd met Excel te blijven werken. Dit omdat het anders zou betekenen extra software te gaan gebruiken en leren beheersen :) .

Het is helaas geen keuze om het in kolommen weer te geven, dat is de output van de software. Die maakt een groot aantal kolommen met een aantal berekeningen, vlaggen, achtergrondcorrecties etc. Het is speciale software die niet open source is, en ingericht is voor verdere verwerking met andere software.

Het experiment waar ik nu naar kijk is 14 sets data, 6000 spots & 2 kanalen per set. En bij ieder experiment dus een wisselend aantal spots dat wordt afgekeurd.

I had a decent lunch, and I'm feeling quite amiable. That's why you're still alive.


Verwijderd

Het kan gewoon in excel hoor, pivot tables, SQL, Acces is in principe allemaal niet nodig. Het nadeel van pivot tables vind ik overigens (i) dat je ze elke x moet updaten als de data veranderd is (vaak weet je dat niet eens en (ii) dat ze "proprietary" zijn (ze zijn niet volledig configureerbaar, ze vertonen soms onverwacht/ongewenst gedrag).

Jij wil dus op de ID-cel sorteren. Ik heb hier 2 vragen over:

1) Is de tekst in de ID-fag van belang? Als deze elke x hetzelfde is kan deze dus ook gewoon weg?

2) Hoe moet er gesorteerd worden als de ID-tag meerdere xx hetzelfde is? Moet er dan ook een andere kolom meegenomen worden voor het sorteren?

  • gambieter
  • Registratie: Oktober 2006
  • Niet online

gambieter

Just me & my cat

Topicstarter
Verwijderd schreef op zondag 16 maart 2008 @ 01:23:
Jij wil dus op de ID-cel sorteren. Ik heb hier 2 vragen over:

1) Is de tekst in de ID-fag van belang? Als deze elke x hetzelfde is kan deze dus ook gewoon weg?
De tekst in de ID-tag is van belang, dat wil zeggen dat die nodig is om te weten over welk bacterieel gen we het hebben.
2) Hoe moet er gesorteerd worden als de ID-tag meerdere xx hetzelfde is? Moet er dan ook een andere kolom meegenomen worden voor het sorteren?
Dat is dus precies mijn probleem met sorteren, de enige identifyer is de kolom met de Cj informatie. Die geen nummer is, maar tekst.

I had a decent lunch, and I'm feeling quite amiable. That's why you're still alive.


Verwijderd

gambieter schreef op zondag 16 maart 2008 @ 01:35:
Dat is dus precies mijn probleem met sorteren, de enige identifyer is de kolom met de Cj informatie. Die geen nummer is, maar tekst.
Het tekstgedeelte is dus niet altijd Cj als ik het goed begrijp. Is het wel altijd 2 letters? Is hoeveelheid cijfers altijd even groot (lijkt het wel op in jouw voorbeeld).

Met andere woorden: kan je wat meer vertellen over de structuur van de ID-tags.

  • gambieter
  • Registratie: Oktober 2006
  • Niet online

gambieter

Just me & my cat

Topicstarter
Verwijderd schreef op zondag 16 maart 2008 @ 01:43:
[...]
Het tekstgedeelte is dus niet altijd Cj als ik het goed begrijp. Is het wel altijd 2 letters? Is hoeveelheid cijfers altijd even groot (lijkt het wel op in jouw voorbeeld).

Met andere woorden: kan je wat meer vertellen over de structuur van de ID-tags.
Het zijn ~6000 ID-tags, waarvan 5025 een Cj code hebben; dat zijn de enige die ik nodig heb, de andere ~1000 zijn niet relevant en vertroebelen de zaak alleen maar. Helaas bevatten die ID-tags of 6, of 7 tekens, dwz Cj0001 of Cj0017c. Het optionele 7e teken is een kleine c. Die zou er eventueel wel uit kunnen worden gehaald met een zoek- en vervang gebeuren, maar liever niet (er zijn downstream applicaties die de volledige code nodig hebben).

I had a decent lunch, and I'm feeling quite amiable. That's why you're still alive.


Verwijderd

gambieter schreef op zondag 16 maart 2008 @ 01:52:
Het zijn ~6000 ID-tags, waarvan 5025 een Cj code hebben; dat zijn de enige die ik nodig heb, de andere ~1000 zijn niet relevant en vertroebelen de zaak alleen maar. Helaas bevatten die ID-tags of 6, of 7 tekens, dwz Cj0001 of Cj0017c. Het optionele 7e teken is een kleine c. Die zou er eventueel wel uit kunnen worden gehaald met een zoek- en vervang gebeuren, maar liever niet (er zijn downstream applicaties die de volledige code nodig hebben).
OK, dat is duidelijk. De cijfers in de ID tab kunnen geisoleerd worden met:

=mid(A:A,3,4)

en deze kunnen later weer gerepareerd worden.

Nog even een vraag over de vergelijking. Het sorteren van de oorspronkelijke data is namelijk geen probleem. Maar is er ook een volgorde waarin de te vergelijken data naast de oorspronkelijke data wordt gezet?

Verwijderd

Trouwens, even een hele andere vraag. Ik zit je SP nog even goed te lezen maar waarom wil je eigenlijk op de beschreven manier sorteren, is dat wel noodzakelijk?

Als je puur analyses wil doen op de data lijkt me dat niet nodig.

(Het sorteren is heel lastig, zeker omdat je ook nog de oorspronkelijke kolom wil laten varieren. Als het je alleen om de analyse gaat dan kan je de data beter direct manipuleren en niet eerst sorteren)

  • gambieter
  • Registratie: Oktober 2006
  • Niet online

gambieter

Just me & my cat

Topicstarter
Verwijderd schreef op zondag 16 maart 2008 @ 02:25:
Trouwens, even een hele andere vraag. Ik zit je SP nog even goed te lezen maar waarom wil je eigenlijk op de beschreven manier sorteren, is dat wel noodzakelijk?
Op zich is het sorteren inderdaad niet nodig, maar ik wil graag de Cj-cellen van de rest (negatieve en positieve controles e.d.) scheiden, en dat gaat makkelijk via sorteren. Verder wil ik graag bij vreemde gemiddeldes kunnen kijken of er een waarde bijzit die vreemd is, en dat is makkelijker als ze gesorteerd zitten. Ik kan je verzekeren dat ik al heel wat gescrolled, gekopieerd e.d. heb de laatste dagen ;)
Als je puur analyses wil doen op de data lijkt me dat niet nodig.

(Het sorteren is heel lastig, zeker omdat je ook nog de oorspronkelijke kolom wil laten varieren. Als het je alleen om de analyse gaat dan kan je de data beter direct manipuleren en niet eerst sorteren)
Eens, het is lastig. Vandaar dat ik de vraag toch maar heb durven stellen :)

I had a decent lunch, and I'm feeling quite amiable. That's why you're still alive.


Verwijderd

gambieter schreef op zondag 16 maart 2008 @ 02:32:
Verder wil ik graag bij vreemde gemiddeldes kunnen kijken of er een waarde bijzit die vreemd is, en dat is makkelijker als ze gesorteerd zitten. Ik kan je verzekeren dat ik al heel wat gescrolled, gekopieerd e.d. heb de laatste dagen ;)
Maar dit soort zaken is toch (bijna) net zo makkelijk te doen als de kolommen alleen individueel gesorteerd zijn? Dus wel beide gesorteerd maar niet precies naast elkaar.

En als jij geinteresseerd bent in (bijv.) gemiddelden is het veel handiger om gewoon een nieuwe tabel te maken met (1x) alle unieke entries en dan de gemiddelden e.d. vergelijken.

Bijv. gemiddelde, SD en # entries zegt misschien wel net zoveel als 4 of 5 individuele waarden.

  • gambieter
  • Registratie: Oktober 2006
  • Niet online

gambieter

Just me & my cat

Topicstarter
Verwijderd schreef op zondag 16 maart 2008 @ 02:48:
[...]
Maar dit soort zaken is toch (bijna) net zo makkelijk te doen als de kolommen alleen individueel gesorteerd zijn? Dus wel beide gesorteerd maar niet precies naast elkaar.
Sorry, hier kan ik je even niet volgen. De F635 en F532 waardes zijn aan elkaar gekoppeld, en ik moet daarvan de ratio hebben. Die ratio gebruik ik in verdere analyses, zoals het gebruik van het gemiddelde.
En als jij geinteresseerd bent in (bijv.) gemiddelden is het veel handiger om gewoon een nieuwe tabel te maken met (1x) alle unieke entries en dan de gemiddelden e.d. vergelijken.
Maar om die tabel te maken moet ik dus ze kunnen sorteren of de gemiddeldes berekenen. En als elke keer een verschillend aantal gecombineerde cellen (ID, F635 en F532) is verwijderd, dan is dat heel veel werk per vergelijking.
Bijv. gemiddelde, SD en # entries zegt misschien wel net zoveel als 4 of 5 individuele waarden.
Zekers, maar ik moet wel naar die waarden terug kunnen kijken ter controle :) .

Sorry als we langs elkaar heen aan het praten zijn. Ik kan wel een sub-spreadsheetje maken als mensen willen, dan is het misschien wat makkelijker? :)

I had a decent lunch, and I'm feeling quite amiable. That's why you're still alive.


Verwijderd

gambieter schreef op zondag 16 maart 2008 @ 03:08:
Sorry, hier kan ik je even niet volgen. De F635 en F532 waardes zijn aan elkaar gekoppeld, en ik moet daarvan de ratio hebben. Die ratio gebruik ik in verdere analyses, zoals het gebruik van het gemiddelde.
Ja, ik bedoelde met individueel gesorteerd ook per experiment en niet per kolom.
Maar om die tabel te maken moet ik dus ze kunnen sorteren of de gemiddeldes berekenen. En als elke keer een verschillend aantal gecombineerde cellen (ID, F635 en F532) is verwijderd, dan is dat heel veel werk per vergelijking.
Dat vraag ik me dus af, vandaar m'n reactie. Ik weet niet hoe goed jij Excel verder kent, sorteren is i.i.g. niet nodig om gemiddelden (e.d.) te berekenen.
Sorry als we langs elkaar heen aan het praten zijn. Ik kan wel een sub-spreadsheetje maken als mensen willen, dan is het misschien wat makkelijker? :)
Wat handig zou zijn is als je gewoon een concreet voorbeeld zou geven wat je als resultaat van je analyse zou willen zien. Nu gaat deze thread vooral over sorteren, waarvan ik me dus afvraag of dat handig is.

Het ultieme doel lijkt me overigens dat je juist niet meer visueel de lijst hoeft te inspecteren, maar kan vertrouwen om de (geaggregeerde) analyse-uitkomsten.

Verwijderd

Gewoon zo maar even een voorbeeldje o.b.v. de 2e tabel uit de SP (ik ga ervan uit dat de eerste kolom kolom A is).

code:
1
2
3
4
5
6
ID       F635       F532     ID       F635       F532
Cj0081   1800       1500     Cj0081   1200       1530
Cj0081   1878        950     Cj0081   1287        750
Cj0081   1200       1300     Cj1530    999       1214                        
Cj1530    640        870     Cj1530    820        630
Cj1530    930       2010     Cj1530    721       1826


Verschil van gemiddelden van F532 bij ID = Cj1530:

{=average(if(A:A="Cj1530",C:C)) - average(if(D:D="Cj1530",F:F))}

Ik wil alleen maar illustreren dat resultaten hiervoor niet op dezelfde regel hoeven te staan.

[ Voor 7% gewijzigd door Verwijderd op 16-03-2008 09:48 ]


  • gambieter
  • Registratie: Oktober 2006
  • Niet online

gambieter

Just me & my cat

Topicstarter
Verwijderd schreef op zondag 16 maart 2008 @ 09:47:
Gewoon zo maar even een voorbeeldje o.b.v. de 2e tabel uit de SP (ik ga ervan uit dat de eerste kolom kolom A is).

Verschil van gemiddelden van F532 bij ID = Cj1530:

{=average(if(A:A="Cj1530",C:C)) - average(if(D:D="Cj1530",F:F))}

Ik wil alleen maar illustreren dat resultaten hiervoor niet op dezelfde regel hoeven te staan.
Dank, ik ga hiermee aan de slag, later meer d:)b !

Ter informatie (het is altijd leuk als je weet waarom iemand zo moeilijk doet ;) ): We kijken inderdaad naar de gemiddelden, maar dan wel naar de trend, niet verder bewerkt. Bijvoorbeeld als we zien dat Cj1530 in bepaalde condities omhoog gaat (dwz ratio 635/532 hoger), dan zegt ons dat wat over hoe de bacterie in dit geval omgaat met veranderingen. Hiervoor heb ik visualisatie en clusteringsoftware, die met tab-delimited outputs werkt

[ Voor 45% gewijzigd door gambieter op 16-03-2008 12:48 ]

I had a decent lunch, and I'm feeling quite amiable. That's why you're still alive.


Verwijderd

gambieter schreef op zondag 16 maart 2008 @ 12:44:
Hiervoor heb ik visualisatie en clusteringsoftware, die met tab-delimited outputs werkt
Heb jij de beschikking over MATLAB? Dit lijkt me nu typisch iets waar MATLAB echt voor gemaakt is.

In 2 dingen is Excel namelijk niet zo goed, (i) zeer grote hoeveelheden data uitgebreid (dus veel "vervolgberekeningen") analyseren en (ii) de grafische output. Dit gaat wel goed in MATLAB, zeker het laatste.

[ Voor 23% gewijzigd door Verwijderd op 16-03-2008 13:04 ]


  • gambieter
  • Registratie: Oktober 2006
  • Niet online

gambieter

Just me & my cat

Topicstarter
Verwijderd schreef op zondag 16 maart 2008 @ 12:57:
[...]

Heb jij de beschikking over MATLAB? Dit lijkt me nu typisch iets waar MATLAB echt voor gemaakt is.

In 2 dingen is Excel namelijk niet zo goed, (i) zeer grote hoeveelheden data uitgebreid (dus veel "vervolgberekeningen") analyseren en (ii) de grafische output. Dit gaat wel goed in MATLAB, zeker het laatste.
Nee, we hebben geen MatLab. De software die de scans maakt en helpt omzetten in spreadsheets heet GenePix, daarna gebruiken de meeste mensen GeneSpring voor analyse (het dongle+prijskaartje+training programma). Ik gebruik voor de visualisatie en clustering een (academisch freeware) Java-programma genaamd Genesis, wat ik vorige week gevonden heb en heel erg mooi spul is :)

I had a decent lunch, and I'm feeling quite amiable. That's why you're still alive.


Verwijderd

gambieter schreef op zondag 16 maart 2008 @ 12:44:
Ter informatie (het is altijd leuk als je weet waarom iemand zo moeilijk doet ;) ): We kijken inderdaad naar de gemiddelden, maar dan wel naar de trend, niet verder bewerkt. Bijvoorbeeld als we zien dat Cj1530 in bepaalde condities omhoog gaat (dwz ratio 635/532 hoger), dan zegt ons dat wat over hoe de bacterie in dit geval omgaat met veranderingen.
Om hier even inhoudelijk op in te gaan: je bedoelt dus trends in (de gemiddelden van de ratio per ID voor) de verschillende experimenten / vergelijkingen?

Want per experiment heb je natuurlijk ook al meerdere waarden van de ratio per ID. Wat is de reden hierachter? Is dat dat de ratio's per experiment statistisch meer verantwoord zijn?

Ik weet namelijk niet of je "reele" data gegeven hebt, maar als dit het geval is dan vind ik de verschillen in de uitkomsten binnen 1 experiment wel erg groot...

(laatste 2 regels van tabel, 1e experiment)
code:
1
2
3
4
5
6
ID       F635       F532     ID       F635       F532
Cj0081   1800       1500     Cj0081   1200       1530
Cj0081   1878        950     Cj0081   1287        750
Cj0081   1200       1300     Cj1530    999       1214                        
Cj1530    640        870     Cj1530    820        630
Cj1530    930       2010     Cj1530    721       1826

  • gambieter
  • Registratie: Oktober 2006
  • Niet online

gambieter

Just me & my cat

Topicstarter
Verwijderd schreef op zondag 16 maart 2008 @ 13:12:
[...]
Om hier even inhoudelijk op in te gaan: je bedoelt dus trends in (de gemiddelden van de ratio per ID voor) de verschillende experimenten / vergelijkingen?

Want per experiment heb je natuurlijk ook al meerdere waarden van de ratio per ID. Wat is de reden hierachter? Is dat dat de ratio's per experiment statistisch meer verantwoord zijn?

Ik weet namelijk niet of je "reele" data gegeven hebt, maar als dit het geval is dan vind ik de verschillen in de uitkomsten binnen 1 experiment wel erg groot...
De waarden waren gewoon verzonnen, maar zijn ook weer niet zo verrassend uit of sync. Het gaat hier om 6000 features op een ruimte van minder dan 1 bij 1 cm, wiens fluorescentie worden gemeten bij 635 en 532 nm. Een overlay van 635 (rood) en 532 (groen) ziet er ongeveer zo uit:
Afbeeldingslocatie: http://microarray.imb.uq.edu.au/images/top_left1.jpg.
Een rode spot is er eentje waar veel meer 635 signaal is, geel is vergelijkbaar signaal, groen is meer 532 signaal. De getallen zijn een interpretatie van de helderheid van de spot in het specifieke kanaal, de ratio is vergelijkbaar met de kleuring.

Wij hebben triplo features van alles waarin we geinteresseerd zijn, verspreid over de chip, zodat we inderdaad een statistische evaluatie kunnen laten doen hoeveel we de data vertrouwen. Ook kan het wel eens zijn dat een deel van de array niet goed gegaan is, en dan heb je toch nog kans een deel van (dure!) array te gebruiken. Ter inschatting, zo'n slide met 2 arrays kost al iets van 200 euro, exclusief verbruiksgoederen voor het werk. Een enkel experiment zal al snel naar de 500-600 euro gaan, dus je wilt de data wel kunnen vertrouwen! Maar goed, dit is meer als achtergrond van het rekenwerk bedoeld :) .

Ik heb trouwens de formule:
{=average(if(A:A="Cj1530",C:C)) - average(if(D:D="Cj1530",F:F))}
eens geprobeerd (exclusief de {} natuurlijk ;) ), maar die selecteert blijkbaar niet de specifieke cellen met Cj1530? Als je op de formule klikt, dan geeft hij gewoon de hele A/C of D/F kolommen, niet alleen de cellen met Cj1530.

I had a decent lunch, and I'm feeling quite amiable. That's why you're still alive.


  • TheDragon2002
  • Registratie: November 2007
  • Laatst online: 27-11 11:42
@gambieter
Formule invullen in formule balk zonder de { en } en dan in plaats van ENTER, CTRL-SHIFT-ENTER doen.
Als je het nog makkelijker wil doen dan laat je de "Cj1530" natuurlijk gewoon verwijzen naar een cel, dan kun je in die cel elke waarde invullen die je maar zoekt.
Met een toepassing van de "offset" formule voor de kolom selectie kun je helemaal toe met maar 1 formule.

Verwijderd

gambieter schreef op zondag 16 maart 2008 @ 13:55:
Ik heb trouwens de formule:
{=average(if(A:A="Cj1530",C:C)) - average(if(D:D="Cj1530",F:F))}
eens geprobeerd (exclusief de {} natuurlijk ;) ), maar die selecteert blijkbaar niet de specifieke cellen met Cj1530? Als je op de formule klikt, dan geeft hij gewoon de hele A/C of D/F kolommen, niet alleen de cellen met Cj1530.
Hij kijkt naar de gehele kolom, vandaar dat de gehele kolommen gemarkeerd worden. Maar hij rekent alleen met de rijen waarin Cj1530 voorkomt.

Aangezien jij Excel 2003 gebruikt kan je niet zomaar C:C zeggen (tenminste niet bij arrays, in 2007 kan dit wel). Je moet er gewoon even C1:C10000 van maken. Idem voor de andere kolommen.

  • gambieter
  • Registratie: Oktober 2006
  • Niet online

gambieter

Just me & my cat

Topicstarter
TheDragon2002 schreef op zondag 16 maart 2008 @ 14:05:
@gambieter
Formule invullen in formule balk zonder de { en } en dan in plaats van ENTER, CTRL-SHIFT-ENTER doen.
Als je het nog makkelijker wil doen dan laat je de "Cj1530" natuurlijk gewoon verwijzen naar een cel, dan kun je in die cel elke waarde invullen die je maar zoekt.
Met een toepassing van de "offset" formule voor de kolom selectie kun je helemaal toe met maar 1 formule.
Ik had hem al zonder de { en } ingevuld, en als ik Ctrl-Shift-Enter doe dan zie ik de { } weer verschijnen. Helaas wordt het gemiddelde niet berekend, en blijven de gehele kolommen geselecteerd. Maakt het uit dat het om Excel 2003 gaat, dwz is dit compatibel met die versie?

Als ik in cel D2 Ctrl-Shift-Enter doe met =AVERAGE(IF(A:A="Cj1530",C:C)), dan zie ik in de cel #NUM! verschijnen, als ik gewoon Enter doe, dan staat er 0 in de cel. Het echte gemiddelde bij de specifieke testsheet die ik gebruik (een real-life sheet!) is 2109.667.

Ik zal die Pivot-table ook eens gaan bestuderen, maar straks eerst Formule 1 kijken ;)

En tijdens het posten komt deze binnen:
Verwijderd schreef op zondag 16 maart 2008 @ 14:09:
[...]

Hij kijkt naar de gehele kolom, vandaar dat de gehele kolommen gemarkeerd worden. Maar hij rekent alleen met de rijen waarin Cj1530 voorkomt.

Aangezien jij Excel 2003 gebruikt kan je niet zomaar C:C zeggen (tenminste niet bij arrays, in 2007 kan dit wel). Je moet er gewoon even C1:C10000 van maken. Idem voor de andere kolommen.
Yes, dat werkt. Perfect, dit is echt te gek _/-\o_

Ik ga hiermee aan de slag, hartstikke bedankt :)


Ik heb ook een licentie voor Office 2007 Pro, maar ben wat huiverig voor de overstap door de compleet veranderde layout en ook dat we op het werk nog een tijd lang 2003 zullen gebruiken. Is Excel 2007 veel beter voor mijn soort analyses?

[ Voor 27% gewijzigd door gambieter op 16-03-2008 14:21 ]

I had a decent lunch, and I'm feeling quite amiable. That's why you're still alive.


  • gambieter
  • Registratie: Oktober 2006
  • Niet online

gambieter

Just me & my cat

Topicstarter
Extra vraag (even in nieuwe reply vanwege overzicht):

Is er een manier om deze formule door Excel automagisch te laten aanpassen, zodat deze dat doet voor alle 1731 Cj codes? Het is helaas geen perfecte opvolgende reeks (er zijn ongeveer 1700 codes, er ontbreken een paar door een reorganisatie source-data/codering), en er zijn dus codes met een c achteraan. Ik dacht het "c" probleem op te lossen is door eerst twee reeksen formules te maken, eentje met alle codes met een c, en een reeks zonder de c. Alle niet gevonden codes gaan er dan uit, en de lijsten worden gecombineerd.

Maar is er een reeks te maken van de formule met alle Cj-codes, zonder 1700 copy-paste acties? ;)

Edit: ik ben nu met de truc uit TheDragon2002 in "[Excel2003] Sorteren / gemiddelde van on..." bezig, door niet de tekst van de cel te gebruiken, maar de celcode. Dat lijkt ook te werken, dus:
=AVERAGE(IF(A1:A10000=A5046,C1:C10000)) en
=AVERAGE(IF(A1:A10000="Cj1530",C1:C10000))
geven dezelfde uitkomst indien gebruikt met Ctrl-Shift-Enter. De array is echter niet te copy-pasten.

[ Voor 22% gewijzigd door gambieter op 16-03-2008 14:43 ]

I had a decent lunch, and I'm feeling quite amiable. That's why you're still alive.


Verwijderd

gambieter schreef op zondag 16 maart 2008 @ 14:16:
Ik heb ook een licentie voor Office 2007 Pro, maar ben wat huiverig voor de overstap door de compleet veranderde layout en ook dat we op het werk nog een tijd lang 2003 zullen gebruiken. Is Excel 2007 veel beter voor mijn soort analyses?
Ja, Excel 2007 is een enorme verbetering t.o.v. 2003 (m.i. de grootste stap sinds het ontstaan van Excel). Lees dit artikel maar eens:

http://msdn2.microsoft.com/en-us/library/aa730921.aspx

  • gambieter
  • Registratie: Oktober 2006
  • Niet online

gambieter

Just me & my cat

Topicstarter
Verwijderd schreef op zondag 16 maart 2008 @ 14:50:
[...]

Ja, Excel 2007 is een enorme verbetering t.o.v. 2003 (m.i. de grootste stap sinds het ontstaan van Excel). Lees dit artikel maar eens:

http://msdn2.microsoft.com/en-us/library/aa730921.aspx
Ik zal hem eens gaan installeren op een andere PC. Moet toch de aangeschafte Surfspot Vista/Office combo eens gaan proberen ;) . Nu nog eens tijd hebben...

I had a decent lunch, and I'm feeling quite amiable. That's why you're still alive.


Verwijderd

gambieter schreef op zondag 16 maart 2008 @ 14:34:
Maar is er een reeks te maken van de formule met alle Cj-codes, zonder 1700 copy-paste acties? ;)
Als alle codes uit CjXXXX bestaan (met X getallen) dan kan je het volgende doen.

Zeg, deze reeks in kolm H komt te staan. Dan wordt H1:

{="Cj"&min(mid(A:A,3,4))}

Voor H2 geldt dan:

{="Cj"&min(if(mid(A:A,3,4))>H1,mid(A:A,3,4)))}

Deze formule kan je vervolgens doortrekken naar beneden.

  • gambieter
  • Registratie: Oktober 2006
  • Niet online

gambieter

Just me & my cat

Topicstarter
Verwijderd schreef op zondag 16 maart 2008 @ 15:02:
[...]

Als alle codes uit CjXXXX bestaan (met X getallen) dan kan je het volgende doen.

Zeg, deze reeks in kolm H komt te staan. Dan wordt H1:

{="Cj"&min(mid(A:A,3,4))}

Voor H2 geldt dan:

{="Cj"&min(if(mid(A:A,3,4))>H1,mid(A:A,3,4)))}

Deze formule kan je vervolgens doortrekken naar beneden.
Die formule werkt niet, ik krijg Cj0 als uitkomst voor de eerste cel (array aangepast naar A1:A10000), en een formule-error met de tweede waar ik niet direct een fout zie (behalve een ) teveel die ik weghaal, maar dat maakt geen verschil). Probleem opnieuw in Excel 2003?

Ik heb wel de gemiddeldes kunnen berekenen door cel-informatie te gebruiken zoals TheDragon2002 aangaf, en op zich werkt dat wel. Slordig echter, want de copy-paste van de formule resulteert in:
Cel 1: {=AVERAGE(IF(A1:A10000=G1,B1:B10000))}
Cel 2: {=AVERAGE(IF(A2:A10001=G2,B2:B10001))}
Cel 3: {=AVERAGE(IF(A3:A10002=G3,B3:B10002))}
Op zich geen probleem omdat er 2-3 cellen per waarde zijn, en na sorteren dus alle belangrijke cellen worden meegenomen. Maar niet de netste methode. Ook is het lastig dat je Ctrl-Shift-Enter moet doen, het zou fijner zijn als je gewoon de { en de } kon gebruiken. Opnieuw een reden voor Excel 2007?

I had a decent lunch, and I'm feeling quite amiable. That's why you're still alive.


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Kijk ook eens naar de dbxxx (dbAverage, dbVar etc) functies en andere ingebouwde analysefuncties in Excel. Mijn theewater zegt dat er nu onnodig moeilijk wordt gedaan.

Imho is de belangrijste beslissing die je eerst moet nemen hoe je de data in je excelsheet zet. In dit geval lijkt het voor hand liggen om de resultaten per run in een apart blad te zetten en dan dmv de db, groepeer- en verwijzingsfuncties op een 15e blad je analyses neer te zetten. :)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Verwijderd

gambieter schreef op zondag 16 maart 2008 @ 16:51:
[...]

Die formule werkt niet, ik krijg Cj0 als uitkomst voor de eerste cel (array aangepast naar A1:A10000), en een formule-error met de tweede waar ik niet direct een fout zie (behalve een ) teveel die ik weghaal, maar dat maakt geen verschil). Probleem opnieuw in Excel 2003?
Ik heb even een voorbeeldje gemaakt (er moest nog een value() voor die mid()):

Afbeeldingslocatie: http://tweakers.net/ext/f/GlViP9JV7lEHfVeW22ZUgxXl/full.png

[ Voor 8% gewijzigd door Verwijderd op 16-03-2008 18:56 ]


  • gambieter
  • Registratie: Oktober 2006
  • Niet online

gambieter

Just me & my cat

Topicstarter
Lustucru schreef op zondag 16 maart 2008 @ 18:28:
Kijk ook eens naar de dbxxx (dbAverage, dbVar etc) functies en andere ingebouwde analysefuncties in Excel. Mijn theewater zegt dat er nu onnodig moeilijk wordt gedaan.
Het probleem zit hem volgens mij vooral in de tekstvelden met Cj. Ik ben naar de DB-functies aan het kijken :) .
Imho is de belangrijste beslissing die je eerst moet nemen hoe je de data in je excelsheet zet. In dit geval lijkt het voor hand liggen om de resultaten per run in een apart blad te zetten en dan dmv de db, groepeer- en verwijzingsfuncties op een 15e blad je analyses neer te zetten. :)
Dat is inderdaad wat ik aan het doen ben. Je krijgt van die monsterlijke spreadsheets van >10 Mb en stapels tabbladen... ;)
Verwijderd schreef op zondag 16 maart 2008 @ 18:55:
[...]
Ik heb even een voorbeeldje gemaakt (er moest nog een value() voor die mid()):
Ik heb die overgenomen, maar die geeft nog steeds een foutmelding. Misschien toch iets van Excel2003?

Anyway, ik moet nu even verder, ik dank iedereen voor de input en ga aan de slag. Voorstellen, suggesties e.d. blijven welkom! :)

Ik zal een stukje real-life spreadsheet op het web zetten, voor mensen die willen spelen. Ik zal mijn email-adres in mijn profiel zetten voor mensen die hun pogingen willen opsturen, ik zal dan zeker hier rapporteren.

Edit: die spreadsheet staat op mijn homepage. Drie tabbladen met een vergelijkbaar stukje van een experiment (Cj0001-Cj0040) per tabblad. Enkele van de datapunten zijn verwijderd bij normalisatie, waardoor het totale aantal punten per tabblad niet meer gelijk is.

[ Voor 9% gewijzigd door gambieter op 16-03-2008 21:25 ]

I had a decent lunch, and I'm feeling quite amiable. That's why you're still alive.


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

mmm, voor het gemak en overzicht lijkt die eerste optie nog wel het beste, d.w.z een tabel creeren met 'gaten' en dan vervolgens met subtotalen er gemiddelden aan toevoegen. Kun je met een simpele klik op een plusje de bijbehorende waarden bijzoeken.

Voor het creeren van die 'gatentabel' is een macrootje de aangewezen weg. :)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Verwijderd

Lustucru schreef op zondag 16 maart 2008 @ 23:34:
mmm, voor het gemak en overzicht lijkt die eerste optie nog wel het beste, d.w.z een tabel creeren met 'gaten' en dan vervolgens met subtotalen er gemiddelden aan toevoegen. Kun je met een simpele klik op een plusje de bijbehorende waarden bijzoeken.

Voor het creeren van die 'gatentabel' is een macrootje de aangewezen weg. :)
Ben ik het wel mee eens hoor. Probleem is ook dat TS toch zoveel data heeft dat er mogelijk performance-problemen volgen als hij dit met Excel formules gaat doen.

Ik denk dat het uiteindelijk wel zou lukken om dit goed op de rails te krijgen zonder macro's, maar het vergt een wel hoop gedoe om e.e.a. precies zo te krijgen als je wilt met de functies die je in Excel ter beschikking worden gesteld.

Groot voordeel van Excel functies (boven macro's) blijf ik vinden dat collega's makkelijker met jouw sheet kunnen werken. Ze hoeven namelijk niets te doen, alles rekent gewoon door.

Ik ga binnen een paar dagen zeker nog wel even naar de sheet van TS kijken :)

  • gambieter
  • Registratie: Oktober 2006
  • Niet online

gambieter

Just me & my cat

Topicstarter
Lustucru schreef op zondag 16 maart 2008 @ 23:34:
mmm, voor het gemak en overzicht lijkt die eerste optie nog wel het beste, d.w.z een tabel creeren met 'gaten' en dan vervolgens met subtotalen er gemiddelden aan toevoegen. Kun je met een simpele klik op een plusje de bijbehorende waarden bijzoeken.

Voor het creeren van die 'gatentabel' is een macrootje de aangewezen weg. :)
Je bedoelt de PivotTabel? Macrootjes, daar was ik al bang voor... ;)
Verwijderd schreef op maandag 17 maart 2008 @ 00:06:
[...]
Ik ga binnen een paar dagen zeker nog wel even naar de sheet van TS kijken :)
Thanks! Geen urgentie, ik ben bang dat we deze techniek nog wel een tijdje zullen gebruiken ;)

[ Voor 22% gewijzigd door gambieter op 17-03-2008 00:09 ]

I had a decent lunch, and I'm feeling quite amiable. That's why you're still alive.


  • gambieter
  • Registratie: Oktober 2006
  • Niet online

gambieter

Just me & my cat

Topicstarter
Even een update: lustucru heeft me verblijd met een macro, waar ik naar ga kijken. Ik zal hier zeker rapporteren :)

I had a decent lunch, and I'm feeling quite amiable. That's why you're still alive.


  • gambieter
  • Registratie: Oktober 2006
  • Niet online

gambieter

Just me & my cat

Topicstarter
Avondje uit geweest (St Patricks Day gevierd met boerenkool en Guinness :+ ), vandaar geen update. Echter, in overleg met Lustucru staat nu een volledige dataset op het web:
Gambieter2.xls
Deze bevat 3 tabbladen met ieder een volledig experiment, gesorteerd op Cj-nummer :) .

offtopic:
De Guinnes werd afgewisseld met Grolsch en Leffe Blond :P

[ Voor 9% gewijzigd door gambieter op 18-03-2008 10:24 ]

I had a decent lunch, and I'm feeling quite amiable. That's why you're still alive.


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

offtopic:
boerenkool met modderwater

Anyway. Voor een 'excel-leek' lijkt het me het makkelijkste werken om idd eerst een totaaltabel te creeren en dan met ingebowude functie als subtotalen gemiddelden te berekenen. Je kunt dan door simpel op een plusje te drukken de bijbehorende waarden in en uit klappen.

De tabel wordt gemaakt door een stukje vba:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
   ' na declaratie en initialisatie van de variabelen o.a.
   ' wss: collectie werkbladen, rij() array met rijtellers voor de bronbladen, out: doelblad
    Do
        'niet alle id komen op alle bladen voor. Eerst het kleinste id ophalen dat aan de beurt is
       
        currentId = ""
        For i = 1 To sheetcount
            If ((currentId = "") And (wss(i).Cells(rij(i), 1) > "")) Or (wss(i).Cells(rij(i), 1) < currentId) Then
                currentId = wss(i).Cells(rij(i), 1)
            End If
        Next i
        If currentId = "" Then Exit Do
        
        Do
           'en dan per ID alle bladen aflopen en waarden kopieren naar doelblad
            anymatch = False
            For i = 1 To sheetcount
                If wss(i).Cells(rij(i), 1) = currentId Then
                    For j = 2 To 4
                        out.Cells(outputrij, j + (i - 1) * 3) = wss(i).Cells(rij(i), j)
                    Next j
                    rij(i) = rij(i) + 1
                    anymatch = True
                End If
            Next i
            If anymatch Then  'als je deze check weglaat krijg je lege rijen tussen de id's 
                out.Cells(outputrij, 1) = currentId
                outputrij = outputrij + 1
            End If
        Loop Until Not anymatch  ' totdat er geen waarden meer gevonden zijn
    Loop

[ Voor 5% gewijzigd door Lustucru op 18-03-2008 09:51 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • gambieter
  • Registratie: Oktober 2006
  • Niet online

gambieter

Just me & my cat

Topicstarter
Ik moet eerlijk toegeven dat me dit begint te duizelen. De array-oplossing van grizzlybeer werkt goed maar is erg langzaam (al die herberekeningen als je copy-paste van nieuwe data doet), maar werkt verder wel goed voor zover ik kan zien :) .

De VBA/macro-oplossing van Lustucru ziet er fantastisch uit op de toegestuurde Excel-sheet, maar als ik die macro op een "schone" sheet met andere data run, dan worden ze wel getransporteerd maar de uitklapmenu's worden niet gemaakt. Ook beperkt het aantal datapunten zich tot het aantal in de originele toegestuurde sheet; ik heb echter een dataverzameling erbij gepakt met alle codes hetzelfde, maar meer datapunten, en die worden niet gepakt?

Ik heb vast wat gegoogled op VBA en Excel, maar heb duidelijk een specifiekere zoekterm nodig. Daar ik echter niet goed begrijp wat hier gebeurt tast ik in het duister. Een paar hints worden gewaardeerd, dan wil ik met plezier verder zoeken zoals het hoort op GoT.

Bah, ik voel me nu echt een n00b, en dat is lang geleden :D :(

[ Voor 4% gewijzigd door gambieter op 19-03-2008 02:06 ]

I had a decent lunch, and I'm feeling quite amiable. That's why you're still alive.


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Tskk ;)
Dat 'uitklapmenu' maak je zelf met de menuoptie data, subtotalen. Ga in het bereik staan of selecteer alle kolommen als ze niet aansluitend zijn en volg de wizard...

Wat noem je datapunten? Meer kolommen per 'feature' of meer 'rijen'? Aantal rijen zou niet uit mogen maken -mits de features oplopend gesorteerd staan!-, het aantal kolommen wat hij doorloopt vind je in regel 19: (kolommen 2 t/m 4) en regel 20 (outputoffset = 3). :)

Enne, de macro loopt tegen het actieve werkblad. :)

[ Voor 10% gewijzigd door Lustucru op 19-03-2008 09:40 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • gambieter
  • Registratie: Oktober 2006
  • Niet online

gambieter

Just me & my cat

Topicstarter
Even een update (of beter gezegd geen progress... :D ). Excuses voor de radiostilte. Ik ben de volgende weken bijna continue op reis voor het werk, en moet dit project even op ijs zetten. Ik kom er zeker op terug, uitstel is zeker geen afstel :)

I had a decent lunch, and I'm feeling quite amiable. That's why you're still alive.


Verwijderd

offtopic:
Lustucru:probeer de exportversie!

ik weet niet hoeveel* experimenten je zo doet, maar waarom zet je ze niet gewoon onder mekaar. voeg aan de dataset per experiment een kolom experimentid toe, en pleur ze dan allemaal onder mekaar in 1 sheet. daarna wat jij de normalisatie noemt er op loslaten. grizzlybeer's matrixformules kunnen mits een eenvoudige aanpassing blijven functioneren, en ook het gebruik van een draaitabel wordt eenvoudiger.

* als het er tientallen zijn, loop je in excel<2007 natuurlijk op de beperking van 65536 rijen, en moet je toch over meerdere sheets gaan
Pagina: 1