-1

I have a data-frame whose first row consists of names of currencies, second row consists of dates, and thirst row consists of historical prices for those dates.

How can I convert this into a time-series object whose columns consist of different currencies and rows consist of historical prices for those dates? The issue is that soem currencies have no prices for certain days.... how can I fill those with NAs and lign them up automatically?

ABIM
  • 364
  • 3
  • 19
  • 1
    It would be much easier to help you if you'd include sample data, expected outcome and the code you tried. – markus Aug 29 '18 at 20:44

1 Answers1

0

Suppose that the data-frame is called cryto.markets.post.2108 with column names "symbol", "dates", and "close" for the closing price.

Then I would do this:

# Creates matrix whose columns are different crypto-currencies and whose rows are different times
#---------------------------------------------------------------------------------------------------#
# N Columns
Col.coins<-unique(crypto.markets.post.2018$symbol);N.coins<-length(Col.coins) # Counts the number of coins in recent history


# N Rows
Row.coins<-seq(from=min(dates),to=max(dates),by=1);N.Rows<-length(Row.coins)

# Initialize Matrix
historical.max.min<-historical.volum<-historical.prices<-matrix(NA,nrow = N.Rows,ncol=N.coins); rownames(historical.prices)<-Row.coins; colnames(historical.prices)<-Col.coins

# Writes data-frame of closing prices
for(j.coin in 1:N.coins){
  time.series.iteration<-crypto.markets.post.2018$symbol == Col.coins[j.coin]#Loads timeseries of this iteration
  time.series.iteration<-crypto.markets.post.2018[time.series.iteration,]
  N.NAs.needed.for.corecsion<-N.Rows-length(as.Date(time.series.iteration$date)) # Determines the difference between the data-size and the matrix's dimensions (for incomplete time-series only :D)
  # Historical Prices
  historical.prices[,j.coin]<-append(rep(NA,N.NAs.needed.for.corecsion),time.series.iteration$close) # Tags on the ts length
  # Historical Volum
  historical.volum[,j.coin]<-append(rep(NA,N.NAs.needed.for.corecsion),time.series.iteration$volume) # Tags on the ts length
  # Difference between max and min
  historical.max.min[,j.coin]<-append(rep(NA,N.NAs.needed.for.corecsion),((time.series.iteration$high)-(time.series.iteration$low))
                                ) # Tags on the ts length
}
ABIM
  • 364
  • 3
  • 19