第一題

# 1
library(zoo) 
## 
## 載入套件:'zoo'
## 下列物件被遮斷自 'package:base':
## 
##     as.Date, as.Date.numeric
TAIFEX <- read.csv("C:/Users/88698/Downloads/f9112312.csv", 
                   sep=",", stringsAsFactors =F, strip.white =
                     TRUE, header=T)

第二題

#2
TAIFEX <- TAIFEX[TAIFEX[, 10] != 0, ]

第三題

#3
FITX <- TAIFEX[TAIFEX$FUTR_ID == "FITX", ]

第四題

#4
table(FITX$SETT_YM)
## 
## 200301 200302 200303 200306 200309 
##   2393    278     57     74     45
summary(FITX$SETT_YM)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  200301  200301  200301  200301  200301  200309
FITX <- FITX[FITX$SETT_YM == "200301", ]

第五題

#5
Sys.setlocale(category = "LC_ALL", locale="English")
## Warning in Sys.setlocale(category = "LC_ALL", locale = "English"): using locale
## code page other than 65001 ("UTF-8") may cause problems
## [1] "LC_COLLATE=English_United States.1252;LC_CTYPE=English_United States.1252;LC_MONETARY=English_United States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252"
td <- as.POSIXct(
      paste(FITX$DATE, FITX$DEAK.HR, FITX$DEAK.Min, FITX$DEAK.Sec, sep=" "),
      format = "%Y%m%d %H %M %S"
) 
head(td)
## [1] "2002-12-31 08:45:09 CST" "2002-12-31 08:45:09 CST"
## [3] "2002-12-31 08:45:09 CST" "2002-12-31 08:45:32 CST"
## [5] "2002-12-31 08:45:40 CST" "2002-12-31 08:45:44 CST"
#unique_td <- td[!duplicated(td)]
#FITX.ts <- zoo(FITX[match(unique_td, td), -c(3:7)], unique_td)

library(zoo)
FITX.ts <- zoo(FITX[,-c(3:7)], td)
## Warning in zoo(FITX[, -c(3:7)], td): some methods for "zoo" objects do not work
## if the index entries in 'order.by' are not unique
head(FITX.ts)
## Warning in zoo(rval, index(x)[i]): some methods for "zoo" objects do not work
## if the index entries in 'order.by' are not unique
##                     FUTR_ID SETT_YM STRIKE PRC  QTY BUY_P1 BUY_Q1 BUY_P2 BUY_Q2
## 2002-12-31 08:45:09 FITX    200301  0      4416  41 4415    1     4414   10    
## 2002-12-31 08:45:09 FITX    200301  0      4416  41 4416    1     4415    1    
## 2002-12-31 08:45:09 FITX    200301  0      4416  41 4416    1     4415    1    
## 2002-12-31 08:45:32 FITX    200301  0      4417   2 4414   10     4412   12    
## 2002-12-31 08:45:40 FITX    200301  0      4415   1 4414   10     4412   12    
## 2002-12-31 08:45:44 FITX    200301  0      4416   1 4414   10     4412   12    
##                     BUY_P3 BUY_Q3 BUY_P4 BUY_Q4 BUY_P5 BUY_Q5 SEL_P1 SEL_Q1
## 2002-12-31 08:45:09 4412   12     4411    7     4410   27     4417    3    
## 2002-12-31 08:45:09 4414   10     4412   12     4411    7     4417    3    
## 2002-12-31 08:45:09 4414   10     4412   12     4411    7     4417    3    
## 2002-12-31 08:45:32 4411    7     4410   25     4409    2     4416    3    
## 2002-12-31 08:45:40 4411    7     4410   25     4409    2     4416    2    
## 2002-12-31 08:45:44 4411    7     4410   25     4409    2     4417    2    
##                     SEL_P2 SEL_Q2 SEL_P3 SEL_Q3 SEL_P4 SEL_Q4 SEL_P5 SEL_Q5
## 2002-12-31 08:45:09 4423    8     4425    2     4426    2     4427    1    
## 2002-12-31 08:45:09 4423    8     4425    2     4426    2     4427    1    
## 2002-12-31 08:45:09 4422    2     4423    8     4425    2     4426    2    
## 2002-12-31 08:45:32 4417    2     4422    2     4423    8     4424    1    
## 2002-12-31 08:45:40 4417    2     4422    2     4423    8     4424    1    
## 2002-12-31 08:45:44 4423    8     4424    1     4425    2     4426    2    
##                     DEALQTY DEALBUY_N DEALSEL_N
## 2002-12-31 08:45:09   41      28        23     
## 2002-12-31 08:45:09   41      28        23     
## 2002-12-31 08:45:09   41      28        23     
## 2002-12-31 08:45:32   45      31        26     
## 2002-12-31 08:45:40   47      33        28     
## 2002-12-31 08:45:44   49      35        30

第六題

#6
FITX.ts <- FITX.ts[!duplicated(time(FITX.ts)), ]
plot.ts(FITX.ts$PRC, 
     main = "Nearby Contracts of FITX",
     col = "steelblue1",
     ylab = "Trading Price", 
     xlab = "", las=0, cex=2
     )

#7
library(highfrequency)
library(xts)
FITX.15min = aggregateTS(as.xts(FITX.ts), on="minutes", k=15)
dim(FITX.ts); dim(FITX.15min)
## [1] 1831   28
## [1] 302  28
plot.ts(FITX.15min$PRC)