[R-es] Sumar positivos y negativos por separado
Manuel Mendoza
mmendoz@ @end|ng |rom |u|br|ghtm@||@org
Lun Ene 2 11:50:48 CET 2023
Bueno, funcionó con:
pos<-c(0)
for (i in 1:nrow(data)) {
x<-data[i,]
pos[i]<-sum(x[x>0])
}
y x<0 para los negativos
Gracias nuevamente,
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