2014-06-06 4 views
1

dataset과 같은 많은 종가가 포함 된 XTS 데이터 세트가 있습니다. 그런 다음 반환 값이 cor()을 통해 상관 관계가 있는지 확인하려고했지만 오류 메시지가 나타납니다 : Error in cor(RETS) : 'x' must be numeric. 여기 상관 오류 : 'x'는 숫자 여야합니다.

RETS <- CalculateReturns(dataset, method= c("log")) # Calculate returns Via PerformanceAnalytics 
RETS<- na.locf(RETS) #Solves missing NAs by carrying forward last observation 
RETS[is.na(RETS)] <- "0" #I then fill the rest of the NAs by adding "0" 

row.names A.Close AA.Close AADR.Close AAIT.Close AAL.Close 
1 2013-01-01 0   0   0   0   0 
2 2013-01-02 0.0035  0.0088  0.0044  -0.00842 0 
3 2013-01-03 0.0195  0.0207  -0.002848 -0.00494 0 
4 2013-01-06 -0.0072  -0.0174  0.0078  -0.00070 0 
5 2013-01-07 -0.0080  0   -0.01106  -0.03353 0 
6 2013-01-08 0.0266  -0.002200 0.006655  0.0160  0 
7 2013-01-09 0.0073  -0.01218  0.007551  0.013620 0 

RETS의 샘플입니다 그럼 난 상관 수행합니다 :

#Perform Correlation 
cor(RETS) -> correl 
Error in cor(RETS1) : 'x' must be numeric 

#Tried using as.numeric 
cor(as.numeric(RETS), as.numeric(RETS) -> correl 

대답은 "1 단을 여기에

내가 한 일이다 ". 나는 또한 psych에서 상관 함수를 사용해 보았지만 같은 오류 메시지가 나타납니다.

+0

'typeof (RETS)'의 결과를 보여 주실 수 있습니까? – Pop

+0

@Pop 예,'typeof (RETS) = "character"' – Jason

+2

무엇이 당신의 질문입니까? 'RETS [is.na (RETS)] <- "0"'을 사용하면 모든 데이터를 문자로 바꿀 수 있으며 문자 상관 관계를 계산할 수 없습니다. – Roland

답변

3

@ Roland의 답변을 어디에 추가할까요?

문제는

RETS[is.na(RETS)] <- "0" 

사용하여 자동으로 문자로 data.types을 변경하는 숫자 값으로 모든 문자 값을 추가하기 때문에 문자로 모든 데이터를 돌고 있다는 것입니다. 따라서 상호 관계를 맺으려고 할 때, 문자 값에 대해 그렇게 할 수있는 방법이 없습니다. 따라서 단순히 할 경우

RETS[is.na(RETS)] <- 0 

대신 변환 문제를 피해야합니다.

오히려 NA에 누락 된 값을 설정하는 것보다, 당신은 또한 예를 들어 누락 된 값을 처리하는 방법을 cor 말하는 명시 적으로 고려할 수

cor(RETS, use="pairwise.complete.obs") 

에만 모두하지-NA있는 그 쌍에 대한 두 변수 사이의 상관 관계를 계산합니다 . 모든 옵션에 대해서는 ?cor 도움말 페이지를 참조하십시오.