2012-02-07 13 views
6

Sto utilizzando emacs-calc tramite il foglio di lavoro in modalità org e vorrei contare il numero di valori, in una colonna, che sono maggiori di un valore specifico (dì 10).Conteggio condizionale di elementi in una colonna in un foglio di calcolo in modalità org

Attualmente sto usando emacs-calc per i calcoli, ma se c'è una soluzione in emacs-lisp, sarebbe molto gradito!

So che l'account conterebbe il numero di valori in un vettore, ma che conterrebbe tutti i valori in quel vettore. Come posso aggiungere una condizione in modo che vengano contati solo i valori> 10?

In altre parole, vorrei una mysterious_function che sarebbe tornato 2 in un caso del genere:

mysterious_function([2,14,11,3,9,1]) 

risposta

4

Serbatoi tutto per le vostre risposte. Ho trovato una soluzione, usando emacs-calc, ispirata alla proposta di Choroba.

vcount(map(<if(gt(#1,10), 1, [])>, [15,2,5,13])) 

Quindi, per il trattamento di una colonna in foglio di calcolo org-mode, che posso fare, per esempio:

vcount(map(<if(gt(#1,10), 1, [])>, @[email protected])) 

La funzione di carta viene utilizzata per applicare una funzione (una anonima, in quel caso) a ciascun elemento di un vettore. Se l'elemento è maggiore di 10, inseriamo un 1, altrimenti un vettore vuoto.

4

Come potrei aggiungere una condizione in modo che solo i valori> 10 vengono contati?

In altre parole, desidero un mysterious_function che restituirebbe 2 in questo caso:

mysterious_function ([2,14,10,3,9,1])

Er, hai solo un valore superiore a 10 in quella lista - intendi> = 10?

Comunque, io non so fogli di calcolo org-mode, ma qui è come farlo in Emacs Lisp:

 
(defun mysterious-function (vector) 
    (length 
    (remove-if-not #'(lambda (n) 
       (>= n 10)) 
      (append vector nil)))) 
+0

Grazie, infatti, l'esempio era mal scelto, mi fisso che, grazie. Grazie anche per la soluzione :) –

3

È inoltre possibile creare una colonna aggiuntiva che conterrà

if($2>10,1,string("")) 

E quindi semplicemente applicare vcount su questa colonna.

Problemi correlati