让我有这样一个数据框架(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做这件事?
如果有任何帮助,我将非常高兴。非常感谢。
发布于 2017-05-21 08:33:23
推测您的日期变量是as.Date,(即df$Date <- as.Date(df$Date, format = '%d.%m.%Y')),
df$z[!is.na(df$x)] <- c(NA, diff.difftime(df$Date[!is.na(df$x)]))
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发布于 2017-05-21 08:40:57
我们可以使用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 2https://stackoverflow.com/questions/44094640
复制相似问题