首页 > 解决方案 > R:基于两个带日期的列的多个条件创建一个新列

问题描述

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

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-02-2016 = 01-01-2016)。如果 date1 = date2 - 1 个月没有可用值,则新值应等于 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 编程的新手,我会感谢每一个建议。

标签: rdate

解决方案


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


推荐阅读