让我有这样一个数据框(df):
Date x
20.01.2016 34
21.01.2016 28
22.01.2016 NA
23.01.2016 NA
24.01.2016 56
25.01.2016 NA
26.01.2016 28
我想将这样的列(z)添加到此数据框
Date x z
20.01.2016 34 -
21.01.2016 28 1
22.01.2016 NA NA
23.01.2016 NA NA
24.01.2016 56 3
25.01.2016 NA NA
26.01.2016 28 2
其中z表示相关行的日期与最近的上一个日期之间的日差(其中x不是NA)。
例如,对于日期24.01.2016,最接近的上一个日期是21.01.2016,其中x不是NA。所以这两个日期的日差是3。
如何使用R?
执行此操作我会很高兴得到任何帮助。非常感谢。
答案 0 :(得分:2)
请注意您的日期变量为 Scanner input = new SCanner(System.in);
x = input.nextInt();
// y, z input
string other = input.next()
,(即as.Date
)然后,
df$Date <- as.Date(df$Date, format = '%d.%m.%Y')
答案 1 :(得分:1)
我们可以使用data.table
library(data.table)
setDT(df)[, Date := as.IDate(Date, "%d.%m.%Y")][!is.na(x), z := Date - shift(Date)]
df
# Date x z
#1: 2016-01-20 34 NA
#2: 2016-01-21 28 1
#3: 2016-01-22 NA NA
#4: 2016-01-23 NA NA
#5: 2016-01-24 56 3
#6: 2016-01-25 NA NA
#7: 2016-01-26 28 2