[R-es] Como modificar valores en un data frame

Carlos Ortega cof en qualityexcellence.es
Lun Jul 27 23:05:47 CEST 2015


Hola,

Por utilizar alguna de las referencias que te ha aportado Daniel y que veas
cómo se utilizan sobre un mismo ejemplo:

#-----------------------
library(data.table)
DT <- data.table(warpbreaks)
head(DT)

DT[, mean(breaks), by="tension"]
DT[, mean(breaks), by="wool"]
DT[, mean(breaks), by=c("wool","tension")]

#----------
aggregate(breaks ~ wool, data = warpbreaks, mean)
aggregate(breaks ~ wool + tension, data = warpbreaks, mean)
#-----------------------

Hay más varias formas más de hacer esto mismo. Mi sugerencia es que te
quedes con "aggregate()" para empezar.

Saludos,
Carlos Ortega
www.qualityexcellence.es

El 27 de julio de 2015, 22:07, daniel <daniel319 en gmail.com> escribió:

> Por favor mantén tus consultas dentro de r-help-es, a otras personas
> también puede serle útil la pregunta o las respuestas, además tendrás
> oportunidad de mejores respuestas de otros participantes.
>
> Interpreto que quieres algo así (uso mi ejemplo)
> colMeans(aves)
> # area  dist distm  otro
> # 5.5   5.5   5.5   5.5
> colMeans(aves[aves$area > 6,1:2])
> #area dist
> # 8.5  6.5
>
> # si lo que buscas no exite como col... puedes usar apply
> apply(aves[aves$area <= 6,1:2], 2, median)
> # area dist
> # 3.5  3.5
>
> Te recomiendo leas ?aggregate, en el paquete plyr la función ddply o en el
> paquete data.table la función data table ( no estoy seguro si usando estas
> funciones primero no tienes que crear una nueva columna con los grupos > 6
> y <= 6, pero te lo dejo a ti.
>
> El 27 de julio de 2015, 16:32, Susana deus alvarez <
> susanadeus.deusalvarez en gmail.com> escribió:
>
> > Perdón que te haga otra pregunta, pero también estoy trancada en otra
> > cosa: con la matriz aves cree una nueva matriz donde divide la variable
> > area en dos, una de area pequeña y otra de area grande. Entonces me
> > quedaría un nuevo data.frame con 4 columnas: abundancia, area, area 2
> > (mayor a 10) y area3 (menor a 10), entonces querría hacer la media de la
> > abundancia en función del area2, lo intento asi: media<-
> tapply(dframe$V1,
> > dframe$area2, mean)
> > Pero no es asi porque yo quiero un solo número, no que me haga la media
> de
> > cada valor de area2, por lo que no se como hacer
> >
> > Muchas gracias
> >
> > Saludos
> >
> >
> >
> > El 27 de julio de 2015, 15:29, daniel <daniel319 en gmail.com> escribió:
> >
> >> Algo así es lo que buscas?
> >>
> >> aves <- data.frame( area = sample(10), dist = sample(10), distm =
> >> sample(10), otro = sample(10))
> >> str(aves)
> >> #'data.frame': 10 obs. of  4 variables:
> >> # $ area : int  4 6 10 2 9 7 3 8 1 5
> >> # $ dist : int  8 2 10 6 7 5 1 3 9 4
> >> # $ distm: int  1 9 7 10 6 4 3 8 2 5
> >> # $ otro : int  9 3 10 4 7 5 8 1 6 2
> >> avelog <- log10(aves[, c("area", "dist", "distm")])
> >> str(avelog)
> >> #'data.frame': 10 obs. of  3 variables:
> >> # $ area : num  0.602 0.778 1 0.301 0.954 ...
> >> # $ dist : num  0.903 0.301 1 0.778 0.845 ...
> >> # $ distm: num  0 0.954 0.845 1 0.778 ...
> >> ?log10
> >>
> >> Espero haber entendido bien tu pregunta.
> >>
> >> Daniel Merino
> >>
> >> El 27 de julio de 2015, 15:11, Susana deus alvarez <
> >> susanadeus.deusalvarez en gmail.com> escribió:
> >>
> >>> Estimad en s, quería realizar una consulta
> >>>
> >>> Dado un data frame llamado aves, como puedo sustiuir las variables
> area,
> >>> dist y distm por sus logaritmos en base10 y volver a crear un data
> frame?
> >>>
> >>>
> >>> Muchas gracias
> >>>
> >>> Saludos
> >>>
> >>> Susana
> >>>
> >>>         [[alternative HTML version deleted]]
> >>>
> >>> _______________________________________________
> >>> R-help-es mailing list
> >>> R-help-es en r-project.org
> >>> https://stat.ethz.ch/mailman/listinfo/r-help-es
> >>>
> >>
> >>
> >>
> >> --
> >> Daniel
> >>
> >
> >
>
>
> --
> Daniel
>
>         [[alternative HTML version deleted]]
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>



-- 
Saludos,
Carlos Ortega
www.qualityexcellence.es

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es