【发布时间】:2018-11-19 11:46:02
【问题描述】:
所以我有一个数据表 (dt),其中包含以下元素、一个 Item 的 id、当天的日期和库存。
ID date Stock
193sd 2016-03-23 12
238ds 2016-04-20 1
193sd 2017-09-12 1
...
例如,像 193sd 这样的 ID 有不同的日期
ID date Stock
193sd 2016-03-23 12
193sd 2017-09-12 1
193sd 2018-09-11 4
193sd 2017-01-12 2
193sd 2016-02-11 1
我需要从 10 个月前的最新日期开始查找股票的平均值,我知道我应该手动执行以下操作:
对于那个 ID 193sd
- 将 dt$date 从最新到最旧排序
-
获取 M 日期(i)和日期(i+1)之间的月数
dates=c(dateNew, dateOld) dates2 <- strptime(dates, format = "%Y-%m-%d") dif <- diff(as.numeric(dates2)) # difference in seconds months = dif/(60 * 60 * 24 * 30) # months 检查 M
-
如果为真,则查找该 ID 的这些日期的股票平均值并完成
平均值是 dt$stock 的值的总和除以 10
如果错误重复
作为其他语言的程序员和 R 的新手,我总是想到 for 循环,但我确信在使用数据表时有更好的清洁方式。
【问题讨论】:
-
你能说得更具体些吗...你是把更多的问题组合成一个问题还是做出不同的事情?
-
问题很清楚 找到 10 个月的库存平均值,但我正在尝试添加尽可能多的细节和方法
-
每月或每个 id 或组合的平均库存?
-
显然对于每个 ID
标签: r data.table