2016-10-07 5 views
1

는 다음 dataframexts : as.xts 이후에 데이터 유형을 제어하는 ​​방법?

time <-c('2016-04-13 23:07:45','2016-04-13 23:07:55','2016-04-13 23:08:45','2016-04-13 23:08:45' 
     ,'2016-04-13 23:08:45','2016-04-13 23:07:50','2016-04-13 23:07:51') 
group <-c('A','A','A','B','B','B','B') 
value<- c(5,10,2,2,NA,1,4) 
df=data.frame(time,group,value) 

> df 
       time group value 
1 2016-04-13 23:07:45  A  5 
2 2016-04-13 23:07:55  A 10 
3 2016-04-13 23:08:45  A  2 
4 2016-04-13 23:08:45  B  2 
5 2016-04-13 23:08:45  B NA 
6 2016-04-13 23:07:50  B  1 
7 2016-04-13 23:07:51  B  4 

참고 누락 된 값 행 5을 고려하십시오. 이제는 lubridate을 사용한 후으로 변환하여 타임 스탬프를 적절한 Posix 유형으로 변환합니다.

> df$time = ymd_hms(df$time) 
> df<-as.xts(df,order.by=df$time) 
> df 
        time     group value 
2016-04-13 23:07:45 "2016-04-13 23:07:45" "A" " 5" 
2016-04-13 23:07:50 "2016-04-13 23:07:50" "B" " 1" 
2016-04-13 23:07:51 "2016-04-13 23:07:51" "B" " 4" 
2016-04-13 23:07:55 "2016-04-13 23:07:55" "A" "10" 
2016-04-13 23:08:45 "2016-04-13 23:08:45" "A" " 2" 
2016-04-13 23:08:45 "2016-04-13 23:08:45" "B" " 2" 
2016-04-13 23:08:45 "2016-04-13 23:08:45" "B" NA 

내 좋은 numericvalue 지금 character입니다!

어떻게 피할 수 있습니까?

감사합니다!

답변

3

데이터의 기본 xts 객체는 숫자 또는 문자 유형일 수 있지만 둘 다 사용할 수없는 행렬입니다 (각 열이 R의 원자 유형이 될 수있는 목록 인 data.frame과 달리). XTS는 얻을 개체를 만들 때

x.df<- xts(df,order.by=df$time) 
> coredata(x.df) 
    time     group value 
[1,] "2016-04-13 23:07:45" "A" " 5" 
[2,] "2016-04-13 23:07:50" "B" " 1" 
[3,] "2016-04-13 23:07:51" "B" " 4" 
[4,] "2016-04-13 23:07:55" "A" "10" 
[5,] "2016-04-13 23:08:45" "A" " 2" 
[6,] "2016-04-13 23:08:45" "B" " 2" 
[7,] "2016-04-13 23:08:45" "B" NA 

timegroup 열을 제거

> as.matrix(df) 
    time     group value 
[1,] "2016-04-13 23:07:45" "A" " 5" 
[2,] "2016-04-13 23:07:55" "A" "10" 
[3,] "2016-04-13 23:08:45" "A" " 2" 
[4,] "2016-04-13 23:08:45" "B" " 2" 
[5,] "2016-04-13 23:08:45" "B" NA 
[6,] "2016-04-13 23:07:50" "B" " 1" 
[7,] "2016-04-13 23:07:51" "B" " 4" 

coredata 반환이 xts 객체를 생성 할 때 무엇이다 : 이런 일이 보는 대략적인 점검이 시도하는 것입니다 숫자 데이터 그룹 열 유형을 정수로 매핑 할 수 있습니다. order.by에 이미 시간 정보가 포함되어 있으므로 x 인수에 대한 xts 개체 생성에 time을 포함하면 안됩니다.

예컨대

df$group_idx <- as.numeric(as.factor(df$group)) 
x.df<- xts(df[, c("group_idx", "value")],order.by=df$time) 
> x.df 
        group_idx value 
2016-04-13 23:07:45   1  5 
2016-04-13 23:07:50   2  1 
2016-04-13 23:07:51   2  4 
2016-04-13 23:07:55   1 10 
2016-04-13 23:08:45   1  2 
2016-04-13 23:08:45   2  2 
2016-04-13 23:08:45   2 NA 
+0

자세한 답변을 보내 주셔서 감사합니다. 그것 참 흥미 롭네. 나는 'xts'(위대한'pandas'에서 유래)에 상당히 익숙하지만'xts'에서의 그 한계는 나에게는 커다란 불만 인 것으로 보인다. 즉, ISIN 코드, 섹터 이름 및 기타 문자열과 같은 정보를 전달할 수 없습니다. 기본적으로'xts'는'dplyr' 또는'data.table' +'lubridate' 할 수없는 것은 무엇입니까? –

+2

일부 질적 정보를 속성으로'xts' 객체에 저장할 수 있습니다. xts는 시계열 데이터를 매우 쉽게 하위 집합으로 만들어 * 다른 시간 주파수에서 시계열 데이터를 병합합니다 * 병합 및 na.locf가있는 바람, TTR 함수가 자연스럽게 작동하며 빠릅니다 ... Jeff Ryan의 페이지를 확인해야합니다 XTR의 진실한 힘을보기 위해 quantmod (google it)에. – FXQuantTrader

+2

또한 일반적으로 단일 xts 오브젝트에 보안 가격/값을 혼합하여 작동하지 않습니다. 다른 증권에 대해 다른 xts 오브젝트 사용 (그룹 컬럼에 대한 필요성을 제거 할 수 있음) – FXQuantTrader