R:基于两个带日期的列的多个条件创建一个新列

R:基于两个带日期的列的多个条件创建一个新列,r,date,R,Date,我有一个如下所示的数据帧(简短示例): df 日期(年月日) 我想根据以下条件创建一个新列: 如果date1=date2(例如01-02-2016=01-02-2016),我需要在新列“Value_new”中输入行中“Value”列的值,其中date1=date2-一个月(例如01-02-2016=01-01-2016)。如果date1=date2-一个月不存在值,则新值应等于0 输出应如下所示: date1 date2 Value Value_new 01-01-

我有一个如下所示的数据帧(简短示例):

df

日期(年月日)

我想根据以下条件创建一个新列: 如果date1=date2(例如01-02-2016=01-02-2016),我需要在新列“Value_new”中输入行中“Value”列的值,其中date1=date2-一个月(例如01-02-2016=01-01-2016)。如果date1=date2-一个月不存在值,则新值应等于0

输出应如下所示:

date1        date2        Value  Value_new
01-01-2016   01-01-2016   100    0
01-02-2016   01-01-2016   90     0
01-03-2016   01-01-2016   110    0
01-02-2016   01-02-2016   180    90
01-03-2016   01-02-2016   80     0
01-04-2016   01-02-2016   100    0
01-05-2016   01-02-2016   70     0
01-03-2016   01-03-2016   90     80
01-04-2016   01-03-2016   100    0
01-05-2016   01-03-2016   80     0
我试图通过使用下一个代码来解决这个问题,但它不能正常工作:

df$Value_new <- 0
df$Value_new[df$date1==df$date2] <- df$Value[(df$date1 == (df$date2 - months(1))]

df$Value\u new您需要更具体地说明从哪个值列中获取观察值。我无法编写任何代码,因为即使是我也不确定。如果我是你,我会把所有过时的东西转换成数字格式,以保持简单。这样,您仍然可以通过查找列内和列间观察值之间的差异来保留1个月。差额将等于10000。然而,我不明白你想以新的价值回报什么。我知道您试图从给定行中的值中减去一个值,其中date1==date2,但仅此而已。在数据帧中有几个月的重复,那么R如何知道从哪一个抓取

可以指定日期列的格式吗。是dd-mm还是mm-ddI检查了
mdy
ymd
。在这两种情况下,
date1==(date2-months(1))
均为FALSE。
df$Value_new <- 0
df$Value_new[df$date1==df$date2] <- df$Value[(df$date1 == (df$date2 - months(1))]