[R] replace character by numeric value

arnaud gaboury @rn@ud@g@boury @end|ng |rom gm@||@com
Wed Sep 27 13:01:08 CEST 2023


I have two data.frames:

mydf1 <- structure(list(symbol = "ETHUSDT", cummulative_quote_qty =
1999.9122, side = "BUY", time = structure(1695656875.805, tzone = "", class
= c("POSIXct", "POSIXt"))), row.names = c(NA, -1L), class = c("data.table",
"data.frame"))

mydf2 <- structure(list(symbol = c("ETHUSDT", "ETHUSDT", "ETHUSDT"),
cummulative_quote_qty = c(1999.119408,
0, 2999.890985), side = c("SELL", "BUY", "BUY"), time =
structure(c(1695712848.487,
1695744226.993, 1695744509.082), class = c("POSIXct", "POSIXt"
), tzone = "")), row.names = c(NA, -3L), class = c("data.table",
"data.frame"))

I use this line to replace 'BUY' by numeric 1 and 'SELL' by numeric -1 in
mydf1 and mydf2:
mynewdf <- mydf |> dplyr::mutate(side = ifelse(side == 'BUY', 1,
ifelse(side == 'SELL', -1, side)))

This does the job but I am left with an issue: 1 and -1 are characters for
mynewdf2 when it is numeric for mynewdf1. The result I am expecting is
getting numeric values.
I can't solve this issue (using as.numeric(1) doesn't work) and don't
understand why I am left with num for mynewdf1 and characters for mynewdf2.

> mynewdf1 <- mydf1 |> dplyr::mutate(side = ifelse(side == 'BUY', 1,
ifelse(side == 'SELL', -1, side)))
> str(mynewdf1)
Classes ‘data.table’ and 'data.frame': 1 obs. of  4 variables:
 $ symbol               : chr "ETHUSDT"
 $ cummulative_quote_qty: num 2000
 $ side                 : num 1      <<<------
 $ time                 : POSIXct, format: "2023-09-25 17:47:55"
 - attr(*, ".internal.selfref")=<externalptr>

> mynewdf2 <- mydf2 |> dplyr::mutate(side = ifelse(side == 'BUY', 1,
ifelse(side == 'SELL', -1, side)))
>  str(mynewdf2)
Classes ‘data.table’ and 'data.frame': 3 obs. of  4 variables:
 $ symbol               : chr  "ETHUSDT" "ETHUSDT" "ETHUSDT"
 $ cummulative_quote_qty: num  1999 0 3000
 $ side                 : chr  "-1" "1" "1"   <<<------
 $ time                 : POSIXct, format: "2023-09-26 09:20:48"
"2023-09-26 18:03:46" "2023-09-26 18:08:29"
 - attr(*, ".internal.selfref")=<externalptr>

Thank you for help

	[[alternative HTML version deleted]]



More information about the R-help mailing list