J'essaye de construire un code dans r qui retournera des valeurs de certaines rangées dans une colonne basée sur des valeurs des rangées dans une colonne différente.Comment extraire certaines valeurs d'une colonne en fonction des restrictions remplies dans une autre colonne?
Je plus spécifique l'ensemble de données suivant (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
(Ceci est seulement un petit extrait de l'ensemble de données totale, j'ai environ 1000 entreprises et 30 ans de données mensuelles pour chaque entreprise)
Je dois calculer la valeur comptable à la valeur du marché pour chaque société pour chaque date. Cependant, j'ai besoin d'utiliser la valeur comptable à partir de décembre 1987 pour calculer les valeurs de la vente au marché de juillet 1988 à juin 1989. Cela signifie que je dois comprendre que R doit comprendre que lors du calcul des valeurs de vente au période juillet 1988 - juin 1989; R doit utiliser la valeur comptable de décembre 1987 tout en utilisant la valeur marchande du mois donné. En d'autres termes, je dois coder ce qui suit: Obtenir la valeur comptable pour "Bure Equity" SI elle correspond à la date du 31.12.87. Ensuite, divisez cette valeur comptable sur la valeur marchande de "Bure Equity" à partir du juillet 88 et jusqu'au juin 89.
(Ceci doit être codé pour que cela fonctionne pour chaque entreprise et pour la période 1987-2016).
Pour ce faire, j'essayé de taper ce qui suit en r:
BTM$"Book to Market" <- ((BTM$"Book Value" | "Date"=="1987-12")/BTM$"Market Value")
Cela me donne certaines valeurs, mais comme on s'y attendait pas les bonnes.
Idéalement, je veux une formule qui puisse me donner la valeur de la colonne "valeur comptable" SI elle correspond à décembre 87, décembre 88, décembre 89 etc. dans la colonne "Date".
De plus, je dois alors R pour diviser le livre des valeurs choisies sur les différentes valeurs du marché dans les mois suivants juillet 88 june89, 89 juillet-juin 90, etc.
Il est également important que R sépare les entreprises de chacun d'eux. Par exemple, j'ai besoin de R pour comprendre qu'il ne peut que diviser la valeur comptable de H & M en décembre 97 sur la valeur de marché en juillet 88 pour H & M (et non par exemple Bure Equity).
Est-ce que quelqu'un a une idée sur la façon dont je peux faire cela?
J'apprécie tous les conseils que je peux obtenir.
Je pense que vous pouvez utiliser dplyr pour atteindre e est. Pouvez-vous poster un exemple reproductible de vos données afin que nous puissions jouer? 'dput (head (BTM))' devrait fonctionner. – csgroen
Dans votre exemple, tous vos 'BookValue' sont les mêmes, pouvez-vous fournir des données où vous avez différents' BookValue'? – useR
J'ai maintenant changé le BookValue's :) – Marthe