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