Foro de debate

Consulta logica

Consulta logica

de Marina Sev -
Número de respuestas: 3

Buenos días,

en primer lugar siento el nivel básico y elemental que pueda tener esta consulta, soy iniciada en R. Estoy trabajando con unos datos agrarios y me gustaría poder explorarlos a partir de agregaciones por tipo de cultivo y año.

He depurado los datos quedándome con aquellos que me interesan. La estructura de mis datos (simplificada, tengo más variables) es:

Año (YEAR) | Codigo Comunidad Autonoma | Codigo Provincia | Conjunto de parcela*(NUM) | Parcela | Cultivo**(CUL) | Rendimiento (RTO)

(*Las parcelas se insertan en distintos conjuntos de parcelas.)

(**Cultivo es una variable factor que toma valores: AM, C2,C6,GI...)

Rendimiento es mi principal variable, ya que es el dato que me interesa conocer.

He realizado una primera 'consulta' con la función Aggregate

  • rendiseg<-aggregate(datos$RTO,list(datos$CUL,datos$NUM,datos$YEAR),sum)

Así he conseguido conocer el rendimiento total por cultivo, conjunto de parcela y año.

En mi segunda consulta he querido realizar un filtro por tipo de cultivo, por ejemplo para el primero que serían almendros (AM)

  • rendiAM<-aggregate(datos$RTO,list(datos$CUL=='AM',datos$NUM,datos$YEAR),sum)

Lo que R me devuelve es la misma tabla que rendiseg, pero en la columna de los cultivos aparecen expresiones lógicas TRUE y FALSE en función a qué campo cultivo cumple la función de que sea igual a 'AM'.

Lo que me gustaría obtener es por grupo de parcela, parcela y año, el rendimiento para un tipo de cultivo en modo tabla sin que me aparezcan TRUE y FALSE, sino simplemente los valores de Almendro.


No sé si mi explicación sobre la duda es demasiado clara.


Agradezco de antemano cualquier tipo de ayuda.


En respuesta a Marina Sev

Re: Consulta logica

de Marina Sev -

De igual modo, y perdón por el doble post.

No sé realmente cuántas parcelas tengo (en mis datos se repiten por cultivo y año) ¿De qué manera puedo saber cuántas parcelas tengo?

Las parcelas vienen identificadas por un número. He usado

  • parcelas<-table(datos$PAR)

Pero lo que obtengo es el total de veces que se repite cada parcela, no el nº total de parcelas distintas.

También he probado con as.factor, convirtiendo esa columna a factor y posteriormente aplicando la función levels. De este modo he conocido el nº de parcelas que tengo.

  • fpar<-as.factor(datos$PAR)
    levels(fpar)

Gracias nuevamente.

En respuesta a Marina Sev

Re: Consulta logica

de Manuel Muñoz Márquez -

Buenas:

Con respecto a tu primer mensaje creo que es más fácil si primero filtras el conjunto de datos y luego aplicas lo que quieras. Para quedarte con los datos cuyo cultivo es 'AM' haces:

datosAM <- datos[datos$CUL=='AM', ]

Y ahora aplicas a datosAM lo que quieras.

Con respecto a conocer el número de parcelas puedes optar por tu solución o bien

unique(datos$PAR)

Un saludo.