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