在R和合并矩阵中定位特定数据点

时间:2014-07-15 08:56:32

标签: r lookup

我有两个数据集,我需要在我将创建的第三个矩阵中合并这两个数据集中的特定点。 我正在尝试为我的数据集中的所有公司创建一个带有股票回报的矩阵。 我公司的数据集(referencedata)看起来像这样:

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

我的股票回报数据集(datastock)如下所示:

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%
......

我需要使用PERMNO中的referencedata代码作为标识符,找到我在datastock寻找的公司。同时,我需要使用earlengage中的referencedata作为标识符来查找datastock中的相同日期,然后在该日之前选择250 returns个数据点datastock。 我想将每个库存的所有这250个数据点放在一个矩阵中(与{stock}}和returns列有关的库存数量为250行。

我正在努力在Excel中复制等效的vlookup函数。输出矩阵如下所示:

PERNMO日期返回

n

...

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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分: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]
}

我没有测试过代码,但这应该可行。