데이터 프레임에서 주식 데이터를 생성해야합니다. 데이터 프레임에는 항목의 재고 기간을 나타내는 시작일과 종료일이 포함됩니다. 항목 당 재고 수준을 집계하고 데이터와 함께 시계열을 만들고 싶습니다.R - 시작일과 종료일이있는 데이터 프레임에서 주식 데이터 생성
A <- c("a","b","a","b","c")
begindate <- as.Date(c("2014-01-01", "2014-01-03", "2014-01-03", "2014-01-02", "2014-01-02"))
enddate <- as.Date(c("2014-01-04", "2014-01-05", "2014-01-06", "2014-01-04", "2014-01-06"))
source <- data.frame(A, begindate, enddate)
source
A begindate enddate
1 a 2014-01-01 2014-01-04
2 b 2014-01-03 2014-01-05
3 a 2014-01-03 2014-01-06
4 b 2014-01-02 2014-01-04
5 c 2014-01-02 2014-01-06
내가이 데이터에서 만들려는 것은
2014-01-01 2014-01-02 2014-01-03 2014-01-04 2014-01-05 2014-01-06
a 1 1 2 2 1 1
b 1 2 2 1
c 1 1 1 1 1
원본 데이터 같은 시간 시리즈는 약 180K 행 오히려 큰입니다 :
나는 형태의 데이터를 가지고있다. 이 일을하는 효과적인 방법은 무엇입니까?
편집
데이비드 Arenburg에 의해 주어진 대답은 잘
library(data.table)
library(reshape2)
setDT(mydata)[, indx := .I]
mydata <- mydata[, list(A = A, seq(begindate, enddate, by = 1)), by = indx]
일을하지만 내 데이터를 오히려 느렸다. 중간 단계를 추가하면 주조 작업이 크게 빨라졌습니다. 데이터 세트가 큰 경우
# intermediate step (pre-aggregation)
mydata_aggregated <- mydata[, list(number_cases = length(indx)), by = list(A, V2)]
# casting over the aggregated list
mydata_series <- dcast(mydata_aggregated, V2 ~ A, value.var = "number_cases") # note
# that I switched the rows and columns, since I found that its easier to pass this
# data to zoo or xts
# creating the zoo object
mydata_zoo <- zoo(mydata_series[,-1],mydata_series[,1])
나는 R에서 시계열에 대해 다소 새로운 편이다. 내가 시도한 것은 seq (begindate, enddate) 객체를 만드는 것이지만, 그것들은 모두 서로 다른 시작과 끝 날짜를 가지기 때문에 객체를 집계하는 방법을 모른다. – Chris
이 질문은 너무 광범위하지 않으며 그가 무엇을 요구하고 있는지 분명합니다. 그 두 가지 이유 때문에 그것을 닫을 필요가 없습니다. –
질문이 해결되었습니다. 그걸로 표시 할 수 있습니까? – Chris