[R-SIG-Finance] apply a function to a data.frame column with condition
Arnaud Gaboury
@rn@ud@g@boury @end|ng |rom gm@||@com
Wed Mar 5 08:57:17 CET 2025
I work with Binancer [1] and PMwR [2] packages to write a trading
journal.
Here is a sample of my data frame:
portfolio <- data.frame(
symbol = c("BTCUSDT", "BTCUSDT", "ETHUBTC", "AAVEBTC", "ENAUSDT"),
time = c("2024-12-17 10:01:30", "2024-12-18 21:32:53", "2025-01-02
10:34:49", "2025-01-02 11:14:43", "2025-01-02 11:15:22")
)
I want to fetch the 'BTCUSDT' price for a specific time if the symbol
of same row end with these 3 letters : 'BTC'. In my sample, it will be
rows 3 and 4.
Here is how I find BTCUSDT price for date 2025-01-02 10:34:49:
get_btc_price <- function(time) {
klines <- binance_klines('BTCUSDT', start_time = '2025-01-02
10:34:49', end_time = '2025-01-02 10:34:49')
}
I was thinking of this code to write my new column BTCUSDT_price:
df <- portfolio %>%
mutate(
BTCUSDT_price = ifelse(str_detect(symbol, "BTC$"), map_dbl(time,
get_btc_price), NA_real_)
)}
But the code returns:
Error in `mutate()`:
ℹ In argument: `BTCUSDT_price = ifelse(...)`.
Caused by error in `map_dbl()`:
ℹ In index: 1.
Caused by error in `[.data.table`:
! Item 1 of j is 12 which is outside the column number range [1,ncol=0]
I have tried other workarounds but all give me errors.
Thank you for help
[1]https://cran.r-project.org/web/packages/binancer
[2]https://cran.r-project.org/web/packages/PMwR
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: This is a digitally signed message part
URL: <https://stat.ethz.ch/pipermail/r-sig-finance/attachments/20250305/b2d7a372/attachment.sig>
More information about the R-SIG-Finance
mailing list