2014-06-25 6 views
0

내가 지금 몇 일 동안을 알아 내려고 노력하고 봤는데 내가 필요 변환 열은

R.

에서 간단한 날짜 열 변환을하고 어려움이있을 것 같다 to.period 명령을 사용하기 전에 날짜와 시간 형식을 지정하십시오. mydata $ Time 열을 형식화하고 전체 시리즈를 4 시간 OHLC 막대로 변환하고 싶습니다.

다음은 코드 입력입니다.

> mydata = read.csv("AUDJPY.csv") 
> colnames(mydata) <- c("Pair","Time","Bid","Ask") 
> head(mydata) 
    Pair     Time Bid Ask 
1 AUD/JPY 20140501 00:00:00.301 94.874 94.893 
2 AUD/JPY 20140501 00:00:00.312 94.876 94.895 
3 AUD/JPY 20140501 00:00:00.316 94.876 94.882 
4 AUD/JPY 20140501 00:00:00.317 94.877 94.884 
5 AUD/JPY 20140501 00:00:00.403 94.877 94.885 
6 AUD/JPY 20140501 00:00:00.420 94.877 94.887 
> mydata$Time <- strptime(as.character(mydata$Time),"%Y%m%d_%H:%M:%S.%f") 
> head(mydata) 
    Pair Time Bid Ask 
1 AUD/JPY <NA> 94.874 94.893 
2 AUD/JPY <NA> 94.876 94.895 
3 AUD/JPY <NA> 94.876 94.882 
4 AUD/JPY <NA> 94.877 94.884 
5 AUD/JPY <NA> 94.877 94.885 
6 AUD/JPY <NA> 94.877 94.887 
> class(mydata$Time) 
[1] "POSIXlt" "POSIXt" 
> 

도와주세요!

답변

3

소수점이있는 초 동안 "% S"대신 "% OS"를 사용하려고합니다. 후자는 값을 모두 무시합니다. 형식에 공백이 있으면 형식 문자열에 공백을 넣으면됩니다. 당신이 날짜 클래스의 값을 표시 할 때 R은 기본적으로 소수 기본값을 표시하지 않지만

x<-c("20140501 00:00:00.301","20140501 00:00:00.420") 

a<-strptime(x,"%Y%m%d %H:%M:%OS"); 
a 
# [1] "2014-05-01 00:00:00 EDT" "2014-05-01 00:00:00 EDT" 
a$sec 
# [1] 0.301 0.420 

을 관찰, 당신은 그들이 개체 자체에 저장되는 볼 수 있습니다.

+0

열에 수백만 개의 행이 있으므로 전체 열의 서식을 지정하려고합니다. 내 결과는 다음과 같습니다. > mydata = read.csv ("AUDJPY.csv") > colnames (mydata) <- c ("쌍", "시간", "입찰", "물음") > x <-c ('mydata [2 ] ') ​​ > a -strptime (x, "% Y % m % d % H : % M : % OS") 머리 (mydata) 쌍 시간 입찰 1 AUD/JPY 20140501 00:00 : 00.301 94.874 94.893 2 AUD/JPY 20,140,501 00 : 00 : 00.312 94.876 94.895 3 AUD/JPY 20,140,501 00 : 00 : 00.316 94.876 94.882 > 헤드 (a) [1] NA > 헤드 (MyData로 [2]) 시간 1 20140501 00 : 00 : 00.301 – user3773444

+0

read.zoo를 호출해야한다고 생각합니다. – user3773444

+0

왜 x' -c ('mydata [2]')'?? 단지''<-strptime (as.character (mydata $ Time), "% Y % m % d % H : % M : % OS")' – MrFlick