我有一个数据框,其第一行包含货币名称,第二行包含日期,而第三行包含这些日期的历史价格。
如何将其转换为时间对象,其列由不同的货币组成,行由这些日期的历史价格组成?问题是,Soem货币在某些天内没有价格。...我如何用NA填充这些货币并自动将其升格?
答案 0 :(得分:1)
假设数据框名为cryto.markets.post.2108,其列名称为“ symbol”,“ dates”和“ close”作为收盘价。
然后我要这样做:
# 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
}