[R-es] Sumar positivos y negativos por separado

Manuel Mendoza mmendoz@ @end|ng |rom |u|br|ghtm@||@org
Lun Ene 2 11:23:33 CET 2023


Gracias Emilio y Proyecto R-UCA, no consigo implementar ninguna de vuestras
propuestas.
En la de Emilio sale bien hasta las funciones, incluidas, pero no entiendo
a partir de: d |>
y me da error.

Respecto a sum(x[x>0]), lamento deciros que  tampoco  lo entiendo ni
consigo implementarlo

¿Podríais darme más detalles?

Gracias,
Manuel


El lun, 2 ene 2023 a las 10:23, Proyecto R-UCA (<r-uca using uca.es>) escribió:

> Buenas,
>
> Sin usar dplyr,
>
> Se puede hacer un bucle en las columnas y para cada columna
>
> sum(x[x>0])
>
> sum(x[x < 0])
>
> Un saludo.
>
> El lun, 02-01-2023 a las 09:02 +0100, Emilio L. Cano escribió:
> > Hola,
> >
> > Este sería un ejemplo reproducible rápido. A mí para esto me gusta
> rowise() de {dplyr}. En c_across() se pueden seleccionar las columnas a
> > conveniencia. Seguramente haya una forma de evitar crear las funciones.
> Si la suma la quieres en valor absoluto multiplicas por -1 en
> > suma_neg y listo.
> >
> > Un saludo,
> > Emilio
> >
> >
> > > set.seed(2023)
> > > d <- data.frame(a = round(rnorm(10), 1),
> > +                 b = round(rnorm(10), 1),
> > +                 c = round(rnorm(10), 1))
> > > d
> >       a    b    c
> > 1  -0.1  0.3 -0.4
> > 2  -1.0 -0.4 -0.3
> > 3  -1.9  0.6  1.2
> > 4  -0.2  0.7  0.2
> > 5  -0.6 -0.6 -0.4
> > 6   1.1  0.7 -1.8
> > 7  -0.9  0.6 -0.6
> > 8   1.0  0.5 -0.9
> > 9  -0.4  0.9  1.5
> > 10 -0.5  0.6  2.7
> > >
> > > library(dplyr)
> > >
> > > suma_pos <- function(x){
> > +   sum((x>0)*x)
> > + }
> > > suma_neg <- function(x){
> > +   sum((x<0)*x)
> > + }
> > >
> > > d |>
> > +   rowwise() |>
> > +   mutate(positivos = suma_pos(c_across()),
> > +          negativos = suma_neg(c_across()))
> > # A tibble: 10 × 5
> > # Rowwise:
> >        a     b     c positivos negativos
> >    <dbl> <dbl> <dbl>     <dbl>     <dbl>
> >  1  -0.1   0.3  -0.4       0.3      -0.5
> >  2  -1    -0.4  -0.3       0        -1.7
> >  3  -1.9   0.6   1.2       1.8      -1.9
> >  4  -0.2   0.7   0.2       0.9      -0.2
> >  5  -0.6  -0.6  -0.4       0        -1.6
> >  6   1.1   0.7  -1.8       1.8      -1.8
> >  7  -0.9   0.6  -0.6       0.6      -1.5
> >  8   1     0.5  -0.9       1.5      -0.9
> >  9  -0.4   0.9   1.5       2.4      -0.4
> > 10  -0.5   0.6   2.7       3.3      -0.5
> >
> >
> >
> > > El 2 ene 2023, a las 6:31, Manuel Mendoza <mmendoza using fulbrightmail.org>
> escribió:
> > >
> > > Buenos días, de un conjunto de variables, quiero obtener la suma de los
> > > valores positivos de cada fila, por una parte, y la de los negativos
> por
> > > otra. Qué variables toman valores positivos y negativos varía de una
> fila a
> > > otra, claro.
> > > Gracias por vuestra ayuda,
> > > Manuel
> > >
> > >         [[alternative HTML version deleted]]
> > >
> > > _______________________________________________
> > > R-help-es mailing list
> > > R-help-es using r-project.org
> > >
> https://urldefense.com/v3/__https://stat.ethz.ch/mailman/listinfo/r-help-es__;!!D9dNQwwGXtA!XPbjkJgKEEP5dmap64bNfzfAmIe4ArK_nN4H9-QIBPAihE4aO-RS6q6YAaM3IT-sP9qA0PqeGoqQF7gIlec$
> > >
> >
> >
> >         [[alternative HTML version deleted]]
> >
> > _______________________________________________
> > R-help-es mailing list
> > R-help-es using r-project.org
> >
> https://urldefense.com/v3/__https://stat.ethz.ch/mailman/listinfo/r-help-es__;!!D9dNQwwGXtA!XPbjkJgKEEP5dmap64bNfzfAmIe4ArK_nN4H9-QIBPAihE4aO-RS6q6YAaM3IT-sP9qA0PqeGoqQF7gIlec$
> >
> _______________________________________________
> R-help-es mailing list
> R-help-es using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>

	[[alternative HTML version deleted]]



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