R:根据两个带有日期的列的多个条件创建一个新列

时间:2020-03-19 20:54:40

标签: r date

我有一个看起来像这样的数据框(简短示例):

df

日期(dd-mm-yyyy)

date1        date2        Value
01-01-2016   01-01-2016   100
01-02-2016   01-01-2016   90
01-03-2016   01-01-2016   110
01-02-2016   01-02-2016   180
01-03-2016   01-02-2016   80
01-04-2016   01-02-2016   100
01-05-2016   01-02-2016   70
01-03-2016   01-03-2016   90
01-04-2016   01-03-2016   100
01-05-2016   01-03-2016   80

我要基于以下条件创建一个新列: 如果date1 = date2(例如01-02-2016 = 01-02-2016)我需要将新列“ Value_new”中的行中“ Value”列中的值放入行中,其中date1 = date2-一个月(例如01 2016年2月2日= 2016年1月1日)。如果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))]

我是R编程的新手,感谢每个建议。

1 个答案:

答案 0 :(得分:1)

您需要更详细地了解要从中获取哪个Value列的观察值。我无法编写任何代码,因为即使我不确定。如果您是我,我会将所有过时的内容转换为数字格式,以使事情变得简单。这样,您仍然可以通过查找列内和列间观察值之间的差异来保留1个月的时间。差额将等于10,000。但是,我不明白您要在Value_new中返回什么。我了解您正在尝试从给定行中date1 == date2的值中减去一个值,仅此而已。数据帧中有重复的月份,所以R如何知道要从中抢走哪一个?

相关问题