Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Handling xts objects that contain special characters

I’d like to retrieve financial data from Yahoo using the tidyquant package (or any other package).

For retrieving Microsoft’s (index: MSFT) closing prices, the following code works fine:

#load packages
library(tidyquant)

#acquire monthly average stock prices
getSymbols("MSFT", from = "2000-08-01", to = "2021-07-31", src = 'yahoo', periodicity = 'daily')
output <- aggregate(MSFT$MSFT.Close, list(format(index(MSFT), "%Y-%m")), mean)
colnames(output) <- c('ClosingPrice')

#create time series for closing stock prices
price = ts(output$ClosingPrice, frequency=12, start=c(2000,08))
summary(price)

However, for retrieving the prices of crude oil (index: CL=F), it doesn’t work as the index contains a special character. More specifically, I get an error message here:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

#acquire monthly average stock prices
getSymbols("CL=F", from = "2000-08-01", to = "2021-07-31", src = 'yahoo', periodicity = 'daily')
output <- aggregate(CL=F$CL=F.Close, list(format(index(MSFT), "%Y-%m")), mean)

Does anyone have an idea of how to could get around this issue? Thanks a lot!

>Solution :

The object names with special characters can be backquoted. Also, if there are NA values, specify the na.rm = TRUE along with na.action = NULL as aggregate can remove the whole row if there is NA in any of the columns

out <- aggregate(`CL=F`$`CL=F.Close`, list(format(index(`CL=F`), "%Y-%m")), 
       mean, na.rm = TRUE, na.action = NULL)

-output

> head(out)
                
2000-08 32.54571
2000-09 33.87100
2000-10 32.97318
2000-11 34.26450
2000-12 28.35500
2001-01 29.26667
> tail(out)
                
2021-02 59.06105
2021-03 62.35739
2021-04 61.70381
2021-05 65.15700
2021-06 71.35273
2021-07 72.43048
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading