r - 如何使用 R 中的 FIFO(先进先出)方法计算库存价值?
问题描述
我有多个库存并跟踪进出的货物(数量)。
我需要使用 FIFO 方法计算库存值(将利润考虑在内)。
Inventory Time Type Price Volume
1 A 2015-07-15 BUY 7.50 4
2 A 2015-07-20 BUY 7.69 2
3 A 2015-07-21 BUY 7.40 1
4 A 2015-07-24 BUY 7.26 2
5 A 2015-07-30 SELL 7.35 8
6 A 2015-07-31 BUY 7.92 2
7 B 2015-09-15 BUY 8.50 3
8 B 2015-09-21 BUY 8.20 5
9 B 2015-09-28 SELL 9.25 6
例如:
2015 年 7 月 30 日的销售(8 件)的 FIFO 成本为:
4 x 7.5 + 2 x 7.69 + 1 x 7.4 + 1 x 7.26 = 60.04
因此利润(损失):
8*7.35 – 60.04 = -1.24
交易后库存 A 中剩余的货物价值:1 x 7.26 + 2 x 7.92 = 23.1
调整损失后的库存价值:23.1 + (-1.24) = 21.86
如何使用 R 分别计算每个库存的投资组合价值?
示例表代码:
df1 <- data.frame(Inventory = c("A", "A", "A", "A", "A", "A", "B", "B", "B"),
Time = c("2015-07-15", "2015-07-20", "2015-07-21", "2015-07-24", "2015-07-30", "2015-07-31", "2015-09-15", "2015-09-21", "2015-09-28"),
Type = c("BUY", "BUY", "BUY", "BUY", "SELL", "BUY", "BUY", "BUY", "SELL"),
Price = c(7.5, 7.69, 7.4, 7.26, 7.35, 7.92, 8.5, 8.2, 9.25),
Volume = c(4, 2, 1, 2, 8, 2, 3, 5, 6))
解决方案
推荐阅读
- c# - Razor 页面打开并具有相关下拉列表时出错
- java - Source.fromResource() 在本地工作,但在服务器上抛出 java.nio.charset.MalformedInputException
- java - Sqlite 数据库从其他表插入数据仅插入一行
- linux - 如何在 Alpine 3.8 上安装 libvips?
- javascript - 如果在该函数之外设置状态,则 React JS 高阶组件不执行函数
- java - 警报在 chrome 中不起作用,但在 Firefox 中起作用
- javascript - 谁能告诉我这个符号是什么
- flutter - Flutter BLoC:构建()方法中 StreamBuilder 中的 Navigator.pop
- spring - 每小时执行一次 Spring Job
- c - 在此 C 代码中,哪个部分的性能成本最高?