R将上一个月的值添加为列 [英] R Add previous month value as a column

查看:109
本文介绍了R将上一个月的值添加为列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个包含日期和价格的数据表:

I have a data table with date and price by month:

set.seed(128)
dat <- data.table(DATE=c("2014-01-01","2014-02-01","2014-03-01","2014-04-01",
                "2014-05-01","2014-06-01","2014-07-01","2014-08-01",
                "2014-09-01","2014-10-01","2014-11-01","2014-12-01"),
              PRICE=rnorm(n = 12, mean=100, sd=15))
dat

      DATE     PRICE
1: 2014-01-01 108.83590
2: 2014-02-01  67.69042
3: 2014-03-01 122.28905
4: 2014-04-01  93.50617
5: 2014-05-01 109.57878
6: 2014-06-01 128.81537
7: 2014-07-01  82.67295
8: 2014-08-01  68.25281
9: 2014-09-01  82.98265
10: 2014-10-01 124.28960
11: 2014-11-01  84.61275
12: 2014-12-01  93.14938

我想将上个月的价格作为列添加到数据表中,因此表格如下所示:

I would like to add the previous months price as a column in the data table, so the table would look like this:

      DATE     PRICE    PRICE_PREV
1: 2014-01-01 108.83590
2: 2014-02-01  67.69042 108.83590
3: 2014-03-01 122.28905 67.69042
...
10: 2014-10-01 124.28960 82.98265
11: 2014-11-01  84.61275 124.28960
12: 2014-12-01  93.14938  84.61275

p>

推荐答案

使用 shift data.table v> = 1.9.5(在GitHub上)

dat[, PRICE_PREV := shift(PRICE)]
dat
#           DATE     PRICE PRICE_PREV
#  1: 2014-01-01 108.95158         NA
#  2: 2014-02-01 107.23918  108.95158
#  3: 2014-03-01 124.96608  107.23918
#  4: 2014-04-01  99.61007  124.96608
#  5: 2014-05-01 118.13540   99.61007
#  6: 2014-06-01 108.70528  118.13540
#  7: 2014-07-01  93.12482  108.70528
#  8: 2014-08-01 100.06829   93.12482
#  9: 2014-09-01 103.14932  100.06829
# 10: 2014-10-01 122.66710  103.14932
# 11: 2014-11-01 104.84064  122.66710
# 12: 2014-12-01 113.37610  104.84064

如果您有旧版本1.9.5)你也可以做

If you have an older version (v < 1.9.5) you could also do

dat[, PRICE_PREV := c(NA, PRICE[-.N])]

这篇关于R将上一个月的值添加为列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆