2017-02-10 1 views
-1

자본 자산 가격 모델에 대해 알아 보려면 R을 사용하고 있습니다. yahoo 재정에서 과거 데이터를 입력하고 있습니다. 기본값은 오름차순으로 설정되어 있습니다. 주문 기능을 사용하고 있지만 작동하지 않는 것 같습니다. 나는 긴 코드에 대해 사과하지만 당신이 볼 수있는 데이터가 기본에서 변경하지 않은날짜별로 데이터를 내림차순으로 정렬하는 데 문제가 있습니다

frmkt.returns(xomFile,snpFile) 
     Date stock.returns nasdaq.returns tbonds.returns 
1 2012-02-01 3.136297e-02 2.957670e-02  0.00725 
2 2012-03-01 -6.330922e-03 2.877178e-02  0.00899 
3 2012-04-02 -1.470687e-02 2.250261e-02  0.01021 
4 2012-05-01 -9.137423e-02 -1.766622e-02  0.00835 
5 2012-06-01 8.206149e-02 -9.709351e-02  0.00620 
6 2012-07-02 8.268583e-03 6.175071e-02  0.00669 
7 2012-08-01 5.283751e-03 7.540821e-04  0.00643 
8 2012-09-04 4.131724e-02 1.531680e-02  0.00622 
9 2012-10-01 -9.261786e-03 2.195070e-02  0.00620 
10 2012-11-01 -3.446171e-02 -1.897965e-02  0.00728 
11 2012-12-03 -2.431944e-02 -1.897973e-02  0.00628 
12 2013-01-02 3.188471e-02 2.994473e-02  0.00763 
13 2013-02-01 -7.079322e-03 2.593275e-02  0.00877 
14 2013-03-01 -1.226536e-03 -4.155914e-03  0.00748 
15 2013-04-01 -2.000930e-02 2.138199e-02  0.00758 
16 2013-05-01 1.711385e-02 6.591916e-03  0.00655 
17 2013-06-03 -1.164647e-02 2.614938e-02  0.01032 
18 2013-07-01 2.367151e-02 -2.948047e-02  0.01396 
19 2013-08-01 -7.886746e-02 4.191165e-02  0.01500 
20 2013-09-03 -2.956996e-02 -5.603171e-02  0.01672 
21 2013-10-01 2.738862e-02 1.946154e-02  0.01422 
22 2013-11-01 3.643796e-02 2.558564e-02  0.01373 
23 2013-12-02 6.837443e-02 8.076057e-03  0.01421 
24 2014-01-02 -1.064880e-01 9.801299e-05  0.01716 
25 2014-02-03 3.762477e-02 -6.354628e-02  0.01437 
26 2014-03-03 3.638218e-05 4.500339e-02  0.01461 
27 2014-04-01 3.102342e-02 4.157888e-03  0.01740 
28 2014-05-01 -2.822288e-02 -1.750584e-02  0.01653 
29 2014-06-02 -1.446795e-02 5.959814e-03  0.01596 
30 2014-07-01 -3.384238e-02 8.557262e-03  0.01656 
31 2014-08-01 -4.471628e-03 -4.114060e-02  0.01673 
32 2014-09-02 -7.125370e-02 2.320441e-02  0.01686 
33 2014-10-01 1.145283e-02 -4.485805e-02  0.01683 
34 2014-11-03 -7.337974e-02 2.047610e-02  0.01634 
35 2014-12-01 5.885659e-03 2.447699e-03  0.01521 
36 2015-01-02 -7.058784e-02 -1.386193e-02  0.01618 
37 2015-02-02 8.585158e-03 -2.999691e-02  0.01185 
38 2015-03-02 -5.576196e-02 3.199194e-02  0.01578 
39 2015-04-01 1.462245e-02 -4.051051e-02  0.01326 
40 2015-05-01 -3.184140e-02 8.525832e-03  0.01507 
41 2015-06-01 -3.903412e-02 -1.392837e-02  0.01556 
42 2015-07-01 -6.497674e-02 -3.326737e-02  0.01702 
43 2015-08-03 -5.637230e-02 -5.214170e-03  0.01514 
44 2015-09-01 -2.686886e-02 -1.028315e-01  0.01504 
45 2015-10-01 9.914473e-02 -8.490621e-03  0.01370 
46 2015-11-02 -2.008928e-02 7.804346e-02  0.01564 
47 2015-12-01 -6.139235e-02 -1.663497e-02  0.01596 
48 2016-01-04 -1.863287e-02 -6.013920e-02  0.01735 
49 2016-02-01 2.505843e-02 -5.023954e-02  0.01383 
> 

:

#This is the pre-processing for historical stock prices against returns of another stock(usually NASDAQ) 
frmkt.returns <- function (file1, file2){ 
    #input downloaded files from excel and convert to workable format 
    file.1 <- read.table(file1,header = TRUE, sep = ",")[,c("Date","Adj.Close")] 
    file.2 <- read.table(file2,header = TRUE, sep = ",")[,c("Date","Adj.Close")] 
    file.1 <- merge(file.1, file.2, by = "Date") 
    file.1[,c("Date")] <- as.Date(file.1[,c("Date")]) 
    file.1 <- file.1[rev(order(file.1$Date)),] 

    #Perform operations to get rates of returns on stocks 
    file.1[-nrow(file.1),-1] <- file.1[-nrow(file.1),-1]/ file.1[-1,-1]-1 
    file.1 <- file.1[-nrow(file.1),] 

    #Input 5 year Treasurey Bond as referrence to returns of free market 
    #Convert to workable format and merge with Stock returns object 
    tbonds <- read.table("/Users/bhumphreys/Downloads/fiveYR_treasurey.csv", header = TRUE, sep = ",")[,c("Date","Adj.Close")] 
    names(tbonds)[2] <- "tbonds.returns" 
    tbonds[,c("Date")] <- as.Date(tbonds[,c("Date")]) 
    file.1 <- merge(file.1, tbonds, by= "Date") 
    file.1$tbonds.returns <- file.1$tbonds.returns/100 
    names(file.1)[2:3] <- c("stock.returns", "nasdaq.returns") 
    file.1[,c("stock.returns","nasdaq.returns")] <- file.1[,c("stock.returns", "nasdaq.returns")]- file.1[,"tbonds.returns"] 

    return(file.1) 
} 

이 내가 점점 계속 출력은 다음과 같습니다 여기 내 코드입니다. 나는 또한 시도했다 file.1 <- file.1[order(file.1$Date, decreasing = TRUE),]

이 데이터를 역으로 도울 수 있도록 도와주세요.

답변

0

현재는 날짜를 내림차순으로 주문 file.1tbonds와 두 번째로 병합된다. 기본적으로 by 열로 merge 종류 :

두 번째 병합에는 종류를 지정하지 고려해

file.1 <- merge(file.1, tbonds, by= "Date", sort=FALSE) 

을 다른 방법으로, 모든 병합 후 내림차순 이동 :

file.1 <- merge(file.1, tbonds, by= "Date") 
file.1 <- file.1[order(file.1$Date, decreasing = TRUE),] 
+0

완벽한 너무 감사합니다 많은. 늦은 답변에 대한 사과 –

0

lubridate 패키지를 사용하여 날짜 형식을 변경 한 다음 주문하십시오.

#Get your data 

df2 <- read.table(text = 
' Date stock.returns nasdaq.returns tbonds.returns 
1 2012-02-01 3.136297e-02 2.957670e-02  0.00725 
2 2012-03-01 -6.330922e-03 2.877178e-02  0.00899 
3 2012-04-02 -1.470687e-02 2.250261e-02  0.01021 
4 2012-05-01 -9.137423e-02 -1.766622e-02  0.00835 
5 2012-06-01 8.206149e-02 -9.709351e-02  0.00620 
6 2012-07-02 8.268583e-03 6.175071e-02  0.00669 
7 2012-08-01 5.283751e-03 7.540821e-04  0.00643 
8 2012-09-04 4.131724e-02 1.531680e-02  0.00622 
9 2012-10-01 -9.261786e-03 2.195070e-02  0.00620 
10 2012-11-01 -3.446171e-02 -1.897965e-02  0.00728 
11 2012-12-03 -2.431944e-02 -1.897973e-02  0.00628 
12 2013-01-02 3.188471e-02 2.994473e-02  0.00763 
13 2013-02-01 -7.079322e-03 2.593275e-02  0.00877 
14 2013-03-01 -1.226536e-03 -4.155914e-03  0.00748 
15 2013-04-01 -2.000930e-02 2.138199e-02  0.00758 
16 2013-05-01 1.711385e-02 6.591916e-03  0.00655 
17 2013-06-03 -1.164647e-02 2.614938e-02  0.01032 
18 2013-07-01 2.367151e-02 -2.948047e-02  0.01396 
19 2013-08-01 -7.886746e-02 4.191165e-02  0.01500 
20 2013-09-03 -2.956996e-02 -5.603171e-02  0.01672 
21 2013-10-01 2.738862e-02 1.946154e-02  0.01422 
22 2013-11-01 3.643796e-02 2.558564e-02  0.01373 
23 2013-12-02 6.837443e-02 8.076057e-03  0.01421 
24 2014-01-02 -1.064880e-01 9.801299e-05  0.01716 
25 2014-02-03 3.762477e-02 -6.354628e-02  0.01437 
26 2014-03-03 3.638218e-05 4.500339e-02  0.01461 
27 2014-04-01 3.102342e-02 4.157888e-03  0.01740 
28 2014-05-01 -2.822288e-02 -1.750584e-02  0.01653 
29 2014-06-02 -1.446795e-02 5.959814e-03  0.01596 
30 2014-07-01 -3.384238e-02 8.557262e-03  0.01656 
31 2014-08-01 -4.471628e-03 -4.114060e-02  0.01673 
32 2014-09-02 -7.125370e-02 2.320441e-02  0.01686 
33 2014-10-01 1.145283e-02 -4.485805e-02  0.01683 
34 2014-11-03 -7.337974e-02 2.047610e-02  0.01634 
35 2014-12-01 5.885659e-03 2.447699e-03  0.01521 
36 2015-01-02 -7.058784e-02 -1.386193e-02  0.01618 
37 2015-02-02 8.585158e-03 -2.999691e-02  0.01185 
38 2015-03-02 -5.576196e-02 3.199194e-02  0.01578 
39 2015-04-01 1.462245e-02 -4.051051e-02  0.01326 
40 2015-05-01 -3.184140e-02 8.525832e-03  0.01507 
41 2015-06-01 -3.903412e-02 -1.392837e-02  0.01556 
42 2015-07-01 -6.497674e-02 -3.326737e-02  0.01702 
43 2015-08-03 -5.637230e-02 -5.214170e-03  0.01514 
44 2015-09-01 -2.686886e-02 -1.028315e-01  0.01504 
45 2015-10-01 9.914473e-02 -8.490621e-03  0.01370 
46 2015-11-02 -2.008928e-02 7.804346e-02  0.01564 
47 2015-12-01 -6.139235e-02 -1.663497e-02  0.01596 
48 2016-01-04 -1.863287e-02 -6.013920e-02  0.01735 
49 2016-02-01 2.505843e-02 -5.023954e-02  0.01383', header = TRUE) 

# Convert the date to required format I am assuming it is ymd format  
df2 <- df2[order(df2$Date, decreasing = TRUE), , drop = FALSE] 

# order the data according to date in descending order 
df2 <- df2[order(df2$Date, decreasing = TRUE), , drop = FALSE] 
관련 문제