我想在r中构建一个代码,它将根据不同列中的行的值,从一列中的某些行返回值。如何根据另一列中实现的限制从一列中提取某些值?
更具体的我有以下的数据集(BTM
):
Date CompanyName MarketValue BookValue BookToMarket
31.12.87 Bure Equity 2182000 2260267
31.01.88 Bure Equity 2102000 1950267
29.02.88 Bure Equity 2182000 2550267
...
31.07.88 Bure Equity 2022000 2980267 BookValue Des87/MarketValueJuly88
31.08.88 Bure Equity 2162000 2650267
30.09.88 Bure Equity 2272000 2390267 BookValue Des87/MarketValueSept88
31.10.88 Bure Equity 2122000 2650267
30.11.88 Bure Equity 2382000 2350267
31.12.88
31.12.87 H&M 2182000 2650267
31.01.88 H&M 2102000 2650267
29.02.88 H&M 2182000 2650267
(这仅是从总数据集一个小片段,我有大约1000家公司和30年的月度数据的每家公司)
我需要计算每个公司在每个日期内的账面市值。然而,当计算1988年7月至1989年6月的账面市值时,我需要使用1987年12月的账面价值。这意味着我需要让R理解在计算账面市值时1988年7月 - 1989年6月; R需要使用1987年12月的账面价值,同时使用给定月份的市场价值。
换句话说,我需要对以下代码进行编码:获取“Bure Equity”的账面价值,如果它对应于日期31.12.87。然后将此账面价值从88年7月至89年的“Bure Equity”的市场价值进行分割。
(这需要进行编码,以便它适用于每家公司和1987年至2016年期间)。
为了做到这一点,我试图在R键键入以下命令:
BTM$"Book to Market" <- ((BTM$"Book Value" | "Date"=="1987-12")/BTM$"Market Value")
这给了我一些值,但预期不正确的。
理想情况下,我想要一个公式,可以给我的值从“账面价值”栏 - 如果它对应于12月87日,12月88日,12月89日等在“日期”列。
而且我当时必须具备r分割在不同的市场价值选择的账面值在接下来的几个月月88 june89,89月 - 90年6月等
同样重要的是,R公司分离从彼此。例如,我需要R理解,H & M(而不是Bure Equity)的市场价值在98年7月份只能在97年12月份将账面价值H & M分开。
有没有人有关于如何完成这件事的想法?
我很感激我能得到的任何提示。
我认为你可以使用dplyr实现日是。你能发布一个可复制的数据例子,这样我们可以玩吗? 'dput(head(BTM))'应该可以工作。 – csgroen
在你的例子中,你所有的'BookValue'都是一样的,你可以在哪里提供不同'BookValue'的数据? – useR
我现在已经改变了BookValue的:) – Marthe