Griera-yandex
2017-Nov-20 11:46 UTC
[R-es] Transformación (logarítmica) de varias variables
Hola, buenos días:
Habitualmente transformo varias variables mediante la función lapply de la forma
siguiente:
---------------
library (MASS); data(Aids2, package = "MASS");DADES<-Aids2
detach ("package:MASS", unload<-TRUE)
LN <- function (X) {
X <- log (X)
X
}
XVARL <- c ("diag", "death")
DADES [XVARL] <- lapply(DADES [XVARL], LN)
---------------
El problema con este código es que pierdo la variable original. Intento cambiar
la variable original (añadiendo el sufijo «_LN» al nombre original) mediante el
código:
---------------
LN <- function (X) {
X <- log (X)
X
}
XVARL <- c ("diag", "death")
DADES [[paste (deparse (substitute (XVARL)), "_LN", sep =
"")]] <- lapply(DADES [XVARL], LN)
---------------
que, evidentemente, no funciona (el código es fruto de una importante empanada
mental con R):
---------------> DADES [[paste (deparse (substitute (XVARL)), "_LN", sep =
"")]] <- lapply(DADES [XVARL], LN)
Error in `[[<-.data.frame`(`*tmp*`, paste(deparse(substitute(XVARL)), :
replacement has 2 rows, data has 2843
---------------
Alguien me podría echar una mano para poder transformar las variables sin perder
las originales. De momento lo hago creándolas previamente. Pero buscaba una
forma de ahorrármelo.
Muchas gracias y saludos. Griera.
Griera-yandex
2017-Nov-20 14:27 UTC
[R-es] Transformación (logarítmica) de varias variables
Hola:
Me contesto a mi mismo con una posible solución:
---------------------------
library (MASS); data(Aids2, package = "MASS");DADES<-Aids2
detach ("package:MASS", unload<-TRUE)
LN <- function (X) {
X <- log (X)
X
}
XVARL = c ("diag", "death")
XVARLf = paste(XVARL, "_LN", sep = "") #
https://stackoverflow.com/questions/14872081/adding-a-prefix-to-column-names
DADES [XVARLf] <- c (lapply(DADES [XVARL], LN))
str (DADES)
---------------------------
Igual existe una solución mejor, pero esta parece funcionar.
Muchas gracias y saludos. Griera.
On Mon, 20 Nov 2017 12:46:11 +0100
Griera-yandex <griera en yandex.com> wrote:
> Hola, buenos días:
>
> Habitualmente transformo varias variables mediante la función lapply de la
forma siguiente:
>
> ---------------
> library (MASS); data(Aids2, package = "MASS");DADES<-Aids2
> detach ("package:MASS", unload<-TRUE)
> LN <- function (X) {
> X <- log (X)
> X
> }
> XVARL <- c ("diag", "death")
> DADES [XVARL] <- lapply(DADES [XVARL], LN)
> ---------------
>
> El problema con este código es que pierdo la variable original. Intento
cambiar la variable original (añadiendo el sufijo «_LN» al nombre original)
mediante el código:
>
> ---------------
> LN <- function (X) {
> X <- log (X)
> X
> }
> XVARL <- c ("diag", "death")
> DADES [[paste (deparse (substitute (XVARL)), "_LN", sep =
"")]] <- lapply(DADES [XVARL], LN)
> ---------------
>
> que, evidentemente, no funciona (el código es fruto de una importante
empanada mental con R):
>
> ---------------
> > DADES [[paste (deparse (substitute (XVARL)), "_LN", sep =
"")]] <- lapply(DADES [XVARL], LN)
> Error in `[[<-.data.frame`(`*tmp*`, paste(deparse(substitute(XVARL)), :
replacement has 2 rows, data has 2843
> ---------------
>
> Alguien me podría echar una mano para poder transformar las variables sin
perder las originales. De momento lo hago creándolas previamente. Pero buscaba
una forma de ahorrármelo.
>
> Muchas gracias y saludos. Griera.