Para el segundo paso, me gustaría utilizar tenue o nrow
Una ventaja de usar subconjunto: usted no tiene que analizar el resultado vuelve a obtener el resultado lo que necesita, simplemente llame al nrow en él directamente.
por lo que en su caso:
v = nrow(subset(Santa, Believe==FALSE)) # 'subset' returns a data.frame
o envuelto en una función anónima :
>> fnx = function(fac, lev){nrow(subset(Santa, fac==lev))}
>> fnx(Believe, TRUE)
3
Aparte de nrow, tenue también hará el trabajo. Esta función devuelve los dimensiones de una trama de datos (filas, cols) por lo que sólo tiene que suministrar el índice apropiado para acceder al número de filas:
v = dim(subset(Santa, Believe==FALSE))[1]
Una respuesta a la OP publicado antes de que éste muestra la uso de una tabla de contingencia No me gusta ese enfoque para el problema general como se recita en el PO. Esta es la razón. De acuerdo, el problema general de ¿cuántas filas en este marco de datos tienen valor x en la columna C? se puede responder usando una tabla de contingencia y también usando un esquema de "filtrado" (como en mi respuesta aquí).Si desea recuentos de fila para todos los valores para una variable de factor dada (columna), entonces una tabla de contingencia (mediante la llamada a tabla y pasando en la (s) columna (s) de interés) es la solución más sensata; sin embargo, el OP solicita el recuento de un valor particular en una variable de factor, no cuenta en todos los valores. Además del impacto en el rendimiento (puede ser grande, podría ser trivial, solo depende del tamaño del marco de datos y del contexto del canal de procesamiento en el que reside esta función). Y, por supuesto, una vez que se devuelve el resultado de la llamada a la tabla, todavía tiene que analizar de ese resultado solo el conteo que desee.
Por eso, para mí, este es un problema de filtrado en lugar de una tabla cruzada.
Creo que esta es probablemente la forma más rápida. – Juan
Esta es la solución más rápida para este caso particular, sin lugar a dudas. – Arani