Qualcuno può spiegare in termini semplici come ridurre la funzione con i suoi argomenti riduci Aggiungi, riduci, diminuisci Rimuove il crossfilter?Quali sono le funzioni reduce, riduzioneSomma, riduzioneRimuovi in crossfilter? Come dovrebbero essere usati?
risposta
Ricordare che la riduzione della mappa riduce un set di dati per mezzo di una particolare dimensione. Ad esempio, consente di utilizzare un'istanza crossfilter con record:
[
{ name: "Gates", age: 57, worth: 72000000000, gender: "m" },
{ name: "Buffet", age: 59, worth: 58000000000, gender: "m" },
{ name: "Winfrey", age: 83, worth: 2900000000, gender: "f" },
{ name: "Bloomberg", age: 71, worth: 31000000000, gender: "m" },
{ name: "Walton", age: 64, worth: 33000000000, gender: "f" },
]
e dimensioni nome, età, valore e genere. Ridurremo la dimensione di genere usando il metodo di riduzione.
Per prima cosa definiamo i metodi reducAdd, reduceRemove e riduciInitial callback.
reduceInitial
restituisce un oggetto con la forma dell'oggetto ridotto e i valori iniziali. Non richiede parametri.
function reduceInitial() {
return {
worth: 0,
count: 0
};
}
reduceAdd
definisce cosa accade quando un record viene 'filtrata nel' oggetto ridotta per un determinato tasto. Il primo parametro è un'istanza transitoria dell'oggetto ridotto. Il secondo oggetto è il record corrente. Il metodo restituirà l'oggetto ridotto transitorio aumentato.
function reduceAdd(p, v) {
p.worth = p.worth + v.worth;
p.count = p.count + 1;
return p;
}
reduceRemove
fa il contrario di reduceAdd
(almeno in questo esempio). Prende gli stessi parametri di reduceAdd
. È necessario perché le riduzioni di gruppo vengono aggiornate man mano che i record vengono filtrati e talvolta i record devono essere rimossi da una riduzione di gruppo precedentemente calcolata.
function reduceRemove(p, v) {
p.worth = p.worth - v.worth;
p.count = p.count - 1;
return p;
}
richiamando il metodo di ridurre sarebbe simile a questa:
mycf.dimensions.gender.reduce(reduceAdd, reduceRemove, reduceInitial)
dare un'occhiata ai valori ridotti, utilizzare il metodo all
. Per vedere i primi valori n usare il metodo top(n)
.
mycf.dimensions.gender.reduce(reduceAdd, reduceRemove, reduceInitial).all()
La matrice restituita sarebbe (dovrebbe) essere simile:
[
{ key: "m", value: { worth: 161000000000, count: 3 } },
{ key: "f", value: { worth: 35000000000, count: 2 } },
]
Gli obiettivi di riduzione di una serie di dati è quello di ricavare un nuovo insieme di dati dai primi dischi di raggruppamento di chiavi comuni, quindi riducendo la dimensione quei raggruppamenti in un unico valore per ogni chiave. In questo caso, abbiamo raggruppato per genere e ridotto la dimensione del valore di tale raggruppamento aggiungendo i valori dei record che condividevano la stessa chiave.
Gli altri metodi reduceX sono metodi di convenienza per il metodo di riduzione.
Per questo esempio reduceSum
sarebbe la sostituzione più appropriata.
mycf.dimensions.gender.reduceSum(function(d) {
return d.worth;
});
Invocare all
sul raggruppamento restituita sarebbe (dovrebbe) essere simile:
[
{ key: "m", value: 161000000000 },
{ key: "f", value: 35000000000 },
]
reduceCount
conterà record
mycf.dimensions.gender.reduceCount();
Invocare all
sul restituita raggruppamento sarebbe (dovrebbe) essere simile :
[
{ key: "m", value: 3 },
{ key: "f", value: 2 },
]
Spero che questo aiuti :)
Fonte: https://github.com/square/crossfilter/wiki/API-Reference
Grandi spiegazioni sulla parte superiore della documentazione , Grazie! – randunel
Felice di essere d'aiuto –
@IsiomaNnodum Posso aggiungere più argomenti per ridurreAggiungi e ridurreRimuovere le funzioni per alcune modifiche specifiche? –
http://blog.rusty.io/2012/09/17/crossfilter-tutorial/
var livingThings = crossfilter([
// Fact data.
{ name: “Rusty”, type: “human”, legs: 2 },
{ name: “Alex”, type: “human”, legs: 2 },
{ name: “Lassie”, type: “dog”, legs: 4 },
{ name: “Spot”, type: “dog”, legs: 4 },
{ name: “Polly”, type: “bird”, legs: 2 },
{ name: “Fiona”, type: “plant”, legs: 0 }
]);
Per esempio, quante cose viventi sono in casa mia?
Per fare questo, chiameremo la funzione groupAll
convenienza, che seleziona tutti record in un unico gruppo, e quindi la funzione reduceCount
, che crea un conteggio dei record.
// How many living things are in my house?
var n = livingThings.groupAll().reduceCount().value();
console.log("There are " + n + " living things in my house.") // 6
Ora prendiamo un conteggio di tutte le gambe nella mia casa. Ancora una volta, utilizzeremo la funzione groupAll
per ottenere tutti i record in un singolo gruppo, ma poi chiameremo la funzione reduceSum
. Questo sta per sommare i valori insieme. Quali valori? Bene, vogliamo gambe, quindi passiamo una funzione che estrae e restituisce il numero di gambe dal fatto.
// How many total legs are in my house?
var legs = livingThings.groupAll().reduceSum(function(fact) {
return fact.legs;
}).value()
console.log("There are " + legs + " legs in my house.")
reduceCount
La funzione crea un conteggio dei record.
reduceSum
la funzione è i valori di somma di questi record.
- 1. Quali metodi dovrebbero essere usati nella mia classe DDD factory?
- 2. Le funzioni `constexpr` dovrebbero anche essere` noxcept`?
- 3. Quali sono le buone euristiche per le funzioni di inlining?
- 4. Dove dovrebbero essere posizionate le funzioni "globali" di Symfony?
- 5. Dovrebbero essere usati i metodi parseJSON/getJSON di jQuery?
- 6. Le funzioni dovrebbero essere all'interno o all'esterno di jQuery?
- 7. Supporto delle reti solo IPv6 Quali sono le cose che dovrebbero essere prese in considerazione?
- 8. Quali sono le differenze tra Selenium Webdriver e angular e2e e quando dovrebbero essere utilizzati?
- 9. Ci sono monadi che possono essere usati come un automa?
- 10. Come riutilizzabili dovrebbero essere le classi ViewModel?
- 11. Quali appendici dovrebbero essere utilizzati nel sistema distribuito? Come configurarli?
- 12. Quali parti di un'applicazione Java dovrebbero essere scritte in Scala?
- 13. Quali sono gli hash (#) usati nella sorgente della libreria?
- 14. Quali sono le differenze tra funzioni e metodi in Swift?
- 15. Le funzioni dovrebbero iniziare con "Get"?
- 16. Come possono essere usati gli oggetti spostati?
- 17. Le implementazioni IDisposable.Dispose() dovrebbero essere idempotenti?
- 18. Quali algoritmi comuni sono usati per C's rand()?
- 19. Come dovrebbero essere scritte le espressioni booleane in PHP?
- 20. Quali sono le "nuove funzioni hash" nell'hash cuckoo?
- 21. Quali sono le differenze tra le funzioni e le subroutine in Fortran?
- 22. Quali dovrebbero essere le dimensioni dell'immagine a @ 1x, @ 2x e @ 3x in Xcode?
- 23. Quando due tabelle sono molto simili, quando dovrebbero essere combinate?
- 24. Come possono essere usati eventi come CancelEventArgs?
- 25. Quali proprietà dovrebbero essere utilizzate con CSSearchableItemAttributeSet su NSUserActivity?
- 26. Quali sono le fortune?
- 27. I commenti Pascal dovrebbero essere nidificati?
- 28. Le relazioni "to-many" dovrebbero essere modellate come proprietà?
- 29. Quali segnali possono essere tranquillamente usati per uccidere un processo Git e quali no?
- 30. quali dovrebbero essere i valori di GOPATH e GOROOT?
mi piacerebbe sapere quali sono le funzioni reduceAdd, reduceRemove fanno, in modo specifico e che cosa gli argomenti passati ad essi specificare –