#install.packages("jsonlite")
library(jsonlite)
url <- "https://min-api.cryptocompare.com/data/v2/histoday?fsym=BTC&tsym=USD&limit=99"
btc_raw <- fromJSON(url)
str(btc_raw, max.level = 2)
## List of 6
## $ Response : chr "Success"
## $ Message : chr ""
## $ HasWarning: logi FALSE
## $ Type : int 100
## $ RateLimit : Named list()
## $ Data :List of 4
## ..$ Aggregated: logi FALSE
## ..$ TimeFrom : int 1750291200
## ..$ TimeTo : int 1758844800
## ..$ Data :'data.frame': 100 obs. of 9 variables:
btc_df <- btc_raw$Data$Data
head(btc_df)
## time high low open volumefrom volumeto close
## 1 1750291200 105264.4 103951.44 104927.9 9905.95 1036540458 104699.7
## 2 1750377600 106559.4 102367.77 104699.7 17700.79 1845670588 103313.3
## 3 1750464000 104021.0 100925.53 103313.3 11217.17 1151399558 102165.7
## 4 1750550400 103430.1 98264.46 102165.7 30700.21 3086806070 101015.4
## 5 1750636800 106134.1 99685.07 101015.4 35198.88 3606601777 105423.7
## 6 1750723200 106358.8 104710.65 105423.7 19908.29 2099787247 106133.2
## conversionType conversionSymbol
## 1 direct
## 2 direct
## 3 direct
## 4 direct
## 5 direct
## 6 direct
btc_df$time <- as.POSIXct(btc_df$time, origin="1970-01-01", tz="UTC")
btc_clean <- btc_df[, c("time", "open", "high", "low", "close", "volumefrom", "volumeto")]
names(btc_clean) <- c("Date", "Open", "High", "Low", "Close", "Volume_From", "Volume_To")
head(btc_clean)
## Date Open High Low Close Volume_From Volume_To
## 1 2025-06-19 104927.9 105264.4 103951.44 104699.7 9905.95 1036540458
## 2 2025-06-20 104699.7 106559.4 102367.77 103313.3 17700.79 1845670588
## 3 2025-06-21 103313.3 104021.0 100925.53 102165.7 11217.17 1151399558
## 4 2025-06-22 102165.7 103430.1 98264.46 101015.4 30700.21 3086806070
## 5 2025-06-23 101015.4 106134.1 99685.07 105423.7 35198.88 3606601777
## 6 2025-06-24 105423.7 106358.8 104710.65 106133.2 19908.29 2099787247
max_close <- max(btc_clean$Close, na.rm = TRUE)
max_close
## [1] 123374.6
min_close <- min(btc_clean$Close, na.rm = TRUE)
min_close
## [1] 101015.4
mean_close <- mean(btc_clean$Close, na.rm = TRUE)
mean_close
## [1] 113487.7