Hola Manuel,

El argumento FUN corresponde a la funcion que debe aplicarse al vector de
valores x que resulta de la division (en partes) de tus datos col1 cuando
consideras especies y sitio.  Por ejemplo, consideremos los datos para la
especie A en el sitio 2:

 subset(d, especie == "A" & sitio == "2")
  especie  año sitio col1
2       A 2008     2    0
8       A 2009     2   NA

En este caso, interesa un 0 como resultado.  Cuando haces la particion de
los datos por especie y sitio, obtienes el vector

x <- c(0, NA)

y al hacer unique(x) obtienes x.  Ahora,  sum(unique(x), na.rm = TRUE) sera
0 (que es lo que necesitas).  En el caso en que col1 sea por ejemplo y <-
c(1, 1), el resultado de unique(y) sera 1 y la suma de ese resultado sera
1, que corresponde exactamente a lo que describiste en tu email a la
lista.  En general, uso unique() para deshacerme de los valores que se
repiten porque solo te interesa uno de ellos, y el argumento na.rm = TRUE
en sum() lo utilizo para no considerar los NA.

Espero que ahora sea un poco mas claro ;-)

Un saludo,
Jorge.-


2012/7/3 Manuel Spínola <mspinola10@gmail.com>

> Muchas gracias a todos.
>
> Como estoy trabajando con aggregate estoy siguiendo la recomendación de
> Jorge.
>
> Cómo utilizo el argumento, FUN = function(x) sum(unique(x)?
>
> No me puedo dar cuenta de como usar este argumento "function(x)
> sum(unique(x)".
>
> Saludos,
>
> Manuel
>
> El 3 de julio de 2012 09:48, Jorge I Velez <jorgeivanvelez@gmail.com>escribió:
>
> Hola Manuel,
>>
>> Podrias intentar
>>
>> d <- structure(list(especie = structure(c(1L, 1L, 1L, 2L, 2L, 2L,
>> 1L, 1L, 1L, 2L, 2L, 2L), .Label = c("A", "B"), class = "factor"),
>>     year = c(2008L, 2008L, 2008L, 2008L, 2008L, 2008L, 2009L,
>>     2009L, 2009L, 2009L, 2009L, 2009L), sitio = c(1L, 2L, 3L,
>>     1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L), col1 = c(1L, 0L, 1L,
>>     0L, 1L, 0L, 1L, NA, 0L, 1L, 0L, 0L)), .Names = c("especie",
>> "año", "sitio", "col1"), class = "data.frame", row.names = c(NA,
>> -12L))
>> r <- with(d, aggregate(col1, list(especie = especie, sitio = sitio),
>>             FUN = function(x) sum(unique(x), na.rm = TRUE)))
>> r[with(r, order(especie, sitio)),]
>>
>> Un saludo,
>> Jorge.-
>>
>>
>> 2012/7/3 Manuel Spínola <>
>>
>>>  Estimados miembros de la lista,
>>>
>>> La semana pasada hice una pregunta sobre como obtener la suma de columnas
>>> condicionado por otras columnas.
>>>
>>> Ahora quisiera saber como hacerlo pero para obtener datos de presencia
>>> (1)
>>> y ausencia (0) y que ignore los NA.
>>>
>>> Por ejemplo,
>>>
>>> especie   año     sitio   col1
>>>
>>> A           2008      1       1
>>> A           2008      2       0
>>> A           2008      3       1
>>> B           2008      1       0
>>> B           2008      2       1
>>> B           2008      3       0
>>> A           2009      1       1
>>> A           2009      2       NA
>>> A           2009      3       0
>>> B           2009      1       1
>>> B           2009      2       0
>>> B           2009      3       0
>>>
>>> Es decir, que como resultado obtenga, en el caso de especie A y sitio 1,
>>> como para los 2 años fue 1, el resultado sea de 1, en el caso de especie
>>> A
>>> y sitio 2, como el año 2008 es 0 y el 2009 es NA, el resultado debería
>>> sea
>>> 0, en el caso de especie A y sitio 3, como el año 2008 es 1 y 2009 es 0,
>>> el
>>> resultado final debería sea 1.
>>>
>>> especie    sitio  col1
>>> A               1      1
>>> A               2      0
>>> A               3      1
>>> B               1      1
>>> B               2      1
>>> B               3      0
>>>
>>> Saludos,
>>>
>>> Manuel
>>>
>>>
>>> --
>>> *Manuel Spínola, Ph.D.*
>>>
>>> Instituto Internacional en Conservación y Manejo de Vida Silvestre
>>> Universidad Nacional
>>> Apartado 1350-3000
>>> Heredia
>>> COSTA RICA
>>> mspinola@una.ac.cr
>>> mspinola10@gmail.com
>>> Teléfono: (506) 2277-3598
>>> Fax: (506) 2237-7036
>>> Personal website: Lobito de río <
>>> https://sites.google.com/site/lobitoderio/>
>>> Institutional website: ICOMVIS <http://www.icomvis.una.ac.cr/>
>>>
>>>         [[alternative HTML version deleted]]
>>>
>>>
>>> _______________________________________________
>>> R-help-es mailing list
>>> R-help-es@r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>
>>>
>>
>
>
> --
> *Manuel Spínola, Ph.D.*
> Instituto Internacional en Conservación y Manejo de Vida Silvestre
> Universidad Nacional
> Apartado 1350-3000
> Heredia
> COSTA RICA
> mspinola@una.ac.cr
> mspinola10@gmail.com
> Teléfono: (506) 2277-3598
> Fax: (506) 2237-7036
> Personal website: Lobito de río<https://sites.google.com/site/lobitoderio/>
> Institutional website: ICOMVIS <http://www.icomvis.una.ac.cr/>
>

	[[alternative HTML version deleted]]

