2012-01-30 3 views
0

다음 json을 변환하여 값을 데이터 프레임에 넣기를 원합니다. 거의 작동하지만 as.data.frame()은 모든 것을 한 행에 집어 넣습니다.R 문자 문자열을 숫자 벡터로 분할하고 변환하십시오.

require(rjson) 
require(RCurl) 

y = getURI(url1) 
y 
[1] "[{\"close\":5.45836392962902,\"highest\":5.45837200714172,\"lowest\":5.45836392962902,\"open\":5.45837200714172,\"start_time\":\"2012-01-29T18:29:24-08:00\"},{\"close\":5.45837200714172,\"highest\":5.45837200714172,\"lowest\":5.45834791002201,\"open\":5.45835598753471,\"start_time\":\"2012-01-29T18:28:24-08:00\"}]" 

x = fromJSON(y) 
> str(x) 
List of 2 
$ :List of 5 
    ..$ close  : num 5.46 
    ..$ highest : num 5.46 
    ..$ lowest : num 5.46 
    ..$ open  : num 5.46 
    ..$ start_time: chr "2012-01-29T18:29:24-08:00" 
$ :List of 5 
    ..$ close  : num 5.46 
    ..$ highest : num 5.46 
    ..$ lowest : num 5.46 
    ..$ open  : num 5.46 
    ..$ start_time: chr "2012-01-29T18:28:24-08:00" 

as.data.frame(x) 
    close highest lowest  open    start_time close.1 highest.1 lowest.1 open.1    start_time.1 
1 5.458364 5.458372 5.458364 5.458372 2012-01-29T18:29:24-08:00 5.458372 5.458372 5.458348 5.458356 2012-01-29T18:28:24-08:00 

대신 하나의 행에 있습니다. 나는 그들을 두 줄로 원해.

close highest lowest  open    start_time 
1 5.458364 5.458372 5.458364 5.458372 2012-01-29T18:29:24-08:00 
2 5.458372 5.458372 5.458348 5.458356 2012-01-29T18:28:24-08:00 

이 기능을 사용하려면 as.data.table에 지정할 수있는 것이 있습니까?

EDIT :

do.call(rbind,lapply(x,as.data.frame)) 

상기

는 데이터 프레임으로 강요 할 수 있었지만 타임 스탬프 열이 두 가지 요인이있다. 나는 POSIX 포맷을 변환하려고하면이 다음 부분은 내가
x$start_time = as.POSIXct(x$start_time) 
x$start_time 
[1] "2012-01-29 CST" "2012-01-29 CST" 

를 얻을하지만 시간 데이터를 손실 자신의 질문 here

y = do.call(rbind,lapply(x,as.data.frame)) 
str(x) 
'data.frame': 2 obs. of 5 variables: 
$ close  : num 5.46 5.46 
$ highest : num 5.47 5.46 
$ lowest : num 5.46 5.46 
$ open  : num 5.46 5.46 
$ start_time: Factor w/ 2 levels "2012-01-29T21:48:24-05:00",..: 1 2 

있습니다.

답변

2

당신은 시도 할 수 있습니다 :이 방법을 수행 할 때

do.call(rbind,lapply(x,as.data.frame)) 
+0

START_TIME 열은 2 요인이있다. 어떤 생각을 POSIX 형식으로 가져 오는 것이 좋을까요? – Kevin

+0

@Kevin'as.POSIXct'? as.POSIXlt'? 읽고 선택하십시오. – joran

+0

나는 그것들을 시험해 보았다. 날짜가 맞지만 시간이 없어 보인다. 내가 as.POSIXlt를 사용할 때 그것은 나에게 잘못된 시간을 준다. – Kevin

관련 문제