Calcolo frequenze

venerdì 06 febbraio 2009 - 00.35

Gianni77 Profilo | Junior Member

Spiego la domanda con un esempio:

Ho 10 valori, per ogni valore devo calcolare quante volte "appare" nelle 10 misure, per cui a partire da un array di 10 valori mi dovrei costruire un array bidimensionale (o una cosa simile) , in cui il primo valore è una delle 10 misure e il secondo valore è il numero di volte che appare.

ovvero:

ho le mie dieci misure: 10,2,4,5,10,6,2,2,4,2

il 10 appare due volte, il 2 appare 4 e cosi via... Per cui alla fine vorrei ottenere una struttura del genere:

(10,2) (2,4) (4,2) (5,1) (6,1)

spero di essermi spiegato.... questa roba è utile per disegnare un istogramma che illustra la frequenza di ogni misura... solo che non ho idea di come partire per fare questo calcolo...

luigidibiasi Profilo | Guru

Ciao,

>Ho 10 valori, per ogni valore devo calcolare quante volte "appare"
>nelle 10 misure, per cui a partire da un array di 10 valori mi
>dovrei costruire un array bidimensionale (o una cosa simile)
>, in cui il primo valore è una delle 10 misure e il secondo valore
>è il numero di volte che appare.
>
>ovvero:
>
>ho le mie dieci misure: 10,2,4,5,10,6,2,2,4,2

ipotizziamo che i dati siano mantenuti in una stringa...
dim K as string ="10,2,4,5,10,6,2,2,4,2" dim M() as string = k.split(",") dim j as integer=0 dim dictHZ as new dictionary(of integer,integer) for j = 0 to M.length-1 ' evitiamo poblemi con la split! if not isnumeric(M(J)) then continue for end if if not dictHZ.containsKey(M(j)) dictHZ.insertKey(M(J),0) end if dictHZ(M(J))+=1 next j

alla fine ti ritrovi un oggetto dizionario del tipo [MISURA]-->[# di volte]

>spero di essermi spiegato.... questa roba è utile per disegnare
>un istogramma che illustra la frequenza di ogni misura... solo
>che non ho idea di come partire per fare questo calcolo...

Luigi Di Biasi
http://blogs.dotnethell.it/luigidibiasi/

Gianni77 Profilo | Junior Member

dictHZ.insertKey(M(j), 0)

mi da errore:
InsertKey non è membro di 'System.Collections.Generic.Dictionary(Of Integer, Integer)

ho provato con

dictHZ.add(M(j), 0)

e pare che va

e poi... in che modo accedo alle chiavi una alla volta e recuperarne i valori?

dictHZ.Keys(NUM)
mi da la chiave (stranamente mi ritrovo uno zero come ultimo valore, che non voglio), e il valore della chiave come lo recupero?

luigidibiasi Profilo | Guru

che svarione!!!

volevo scrivere .ADD ho scritto senza provare su vb scusami :)


per recuperare le chiavi

dim it as keyvaluepair(of integer,integer) for each it in dictHZ it.key = valore rilevato it.value = frequenza next it

comunque vedi bene dove trovare il keyvaluepair perchè non ho vb sotto mano e non ricordo il namespaces .. dovrebbe comunque averlo importato di default

Luigi Di Biasi
http://blogs.dotnethell.it/luigidibiasi/

Gianni77 Profilo | Junior Member

Ottimo. Proprio quello che volevo!!!
Grazie di cuore!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5