2014-07-15 2 views
0

데이터 세트가 두 개인 것으로 세 번째 행렬에이 두 데이터 세트의 특정 포인트를 병합해야합니다. 내 데이터 집합의 모든 회사에 대해 주식 수익률이있는 행렬을 만들려고합니다. 회사 (referencedata)의 내 데이터 세트는 다음과 같습니다R에서 특정 데이터 점 찾기 및 행렬 병합

Company PERNMO earlengage 
A  45643 6/7/2011 
B  86743 9/12/2012 
C  75423 3/4/2011 
D  95345 2/11/2011 
...... 

주식 수익률 (datastock)의 내 데이터 세트는 다음과 같습니다 : 나는대로 referencedataPERMNO 코드를 사용할 필요가

PERNMO date  returns 
11456  1/3/2011 3.4% 
11456  1/4/2011 5.4% 
11456  1/5/2011 0.5% 
11456  1/6/2011 1.2% 
11456  1/7/2011 0.7% 
...... 

내가 찾는 회사를 찾을 수있는 식별자는 datastock입니다. 동시에 earlengagereferencedata에서 식별자로 사용하여 datastock에서 같은 날짜를 찾은 다음 해당 날짜 이전에 250 returns 데이터 포인트를 datastock에서 선택해야합니다. 하나의 행렬에 각각의 주식에 대해 250 개의 데이터 포인트를 모두 넣고 싶습니다. 주식수와 관련된 returns & n 열에 250 행을 넣으 려합니다.

Excel에서 vlookup 기능과 동일한 기능을 복제하기 위해 고심하고 있습니다. ......

PERNMO 날짜는

45643  1/3/2011 3.4% 
45643  1/4/2011 5.4% 
45643  1/5/2011 0.5% 

을 반환

45643  6/7/2011 1.2% 

     (this is the earlengage date) 

어떤 도움이 많이 주시면 감사하겠습니다 : 출력 행렬은 다음과 같을 것이다.

+0

'merge'와 약간의 변형/분할을 사용 하시겠습니까? 좀 더 대표적인 입력 데이터를 제공하십시오 (250 데이터 포인트가 필요하지 않으며 3 가지로 충분합니다). 원하는 출력을 정확하게 표시하십시오. – Roland

+0

@Roland 출력 행렬이 어떻게 생겼는지 추가했습니다. –

답변

0

내가 보는 방식대로 한 번에 두 가지 문제를 해결하려고합니다. 첫 번째는 병합하고 다른 하나는 마지막 250 데이터 포인트를 가져 와서 매트릭스로 변환합니다. 차라리 내가 코드를 테스트하지 않았습니다 하나 개의 기능

# Sorting so that we can take the bottom 250 rows to find the latest data 
datastock = datastock[order(datastock$date),] 

dataMatrix = NULL 

for (i in 1:nrow(referencedata)) 
{ 
    single_stock_data = subset(datastock, PERNMO == referencedata$PERNMO[i] & 
             date < referencedata$PERNMO[i]) 

    dataMatrix = cbind(dataMatrix, tail(single_stock_data$returns, 251)[1:250] 
} 

를 사용하여 해결하는 것보다 하나 하나의 행을 통해 이동하여 간단한 방법 가능한에서이 문제를 접근 거라고하지만이 작동합니다.

+0

감사합니다 @Azrael, 이것은 내가 찾고있는 것입니다. 그러나 나는 "얼라이언진"날짜 이전에 250 개의 데이터 포인트를 선택하기 위해 고심하고 있습니다. 나는 꼬리 기능을 사용했고, "얼라이너 게이션 (inclengage)"이전의 250 포인트가 아닌 마지막 250 데이터 포인트를 뱉어 낸다. 어떻게 할 수 있을지에 대한 아이디어가 있습니까? –

+0

이미 알았을 지 모르지만 여기에 - 꼬리가 있습니다. (single_stock_data $ returns, 251) [1 : 250] –

+0

작전에서 계속 오류가 발생합니다.인자 (single_stock_data $ 일 [J], dummydate) 요소 레벨 세트는 상이한 대 (I (1) : nrow (referencedata)) { single_stock_data = 서브셋 (datastock, pernmo == referencedata $ pernmo [I]) dummydate = referencedata $ earlengage [I] 경우 (nrow (single_stock_data)> 0) {위한 (j 1 : nrow (single_stock_data)) { 경우 (single_stock_data $으로 날짜 [J] == dummydate) { single_stock_data = 꼬리 (single_stock_data $ 복귀, J) 1 : 250] = cbind (데이터 매트릭스, 리턴 single_stock_data $) single_stock_data < 데이터 매트릭스 - NULL }}} ,} –