2012-02-07 11 views
6

Estoy usando emacs-calc a través de la hoja de cálculo org-mode y me gustaría contar el número de valores en una columna que son mayores que un valor específico (digamos 10).Contar elementos condicionalmente en una columna en una hoja de cálculo de modo orgánico

Actualmente estoy usando emacs-calc para los cálculos, pero si hay una solución en emacs-lisp, sería muy bienvenido.

Sé que vcount contendría el número de valores en un vector, pero eso contaría todos los valores en ese vector. ¿Cómo podría agregar una condición para que solo se cuenten los valores> 10?

En otras palabras, me gustaría un mysterious_function que devolvería 2 en tal caso:

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

Respuesta

4

Tanques para todos para sus respuestas. Encontré una solución, usando emacs-calc, inspirada en la propuesta de choroba.

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

Por lo tanto, para el tratamiento de una columna en la hoja de cálculo de org-mode, que puedo hacer, por ejemplo:

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

La función de mapa se utiliza para aplicar una función (un anónimo, en ese caso) a cada elemento de un vector. Si el elemento es mayor que 10, ponemos un 1, de lo contrario, un vector vacío.

4

¿Cómo podría agregar una condición para que sólo los valores de> 10 se cuentan?

En otras palabras, me gustaría un mysterious_function que devolvería 2 en tal caso:

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

Er, usted solo tiene uno valor mayor que 10 en esa lista - ¿quiere decir> = 10?

De todos modos, no sé acerca de las hojas de cálculo org-mode, pero aquí es cómo hacerlo en Emacs Lisp:

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

Gracias, de hecho, el ejemplo fue mal escogido, me fijo que, gracias. Gracias por su solución, también :) –

3

También puede crear una columna adicional que contendrá

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

Y luego simplemente aplique vcount en esta columna.

Cuestiones relacionadas