我有一个包含这样的日期值的数据集。
Date Id
10/1/2013 3444
87873
1243
35473
7363
8335
10/2/2013 4783
3355
4544
94453
33554
我想做的是自动填充日期值,直到遇到下一个日期值,应填充 2013 年 10 月 1 日,直到遇到 2013 年 10 月 2 日。最终的数据集应如下所示
Date Id
10/1/2013 3444
10/1/2013 87873
10/1/2013 1243
10/1/2013 35473
10/1/2013 7363
10/1/2013 8335
10/2/2013 4783
10/2/2013 3355
10/2/2013 4544
10/2/2013 94453
10/2/2013 33554
感谢任何帮助。
最佳答案
我们可以尝试na.locf
来自zoo
更改 ''
后值为NA
.
library(zoo)
is.na(df1$Date) <- df1$Date==''
df1$Date <- na.locf(df1$Date)
或者使用data.table
,我们将 'data.frame' 转换为 'data.table' ( setDT(df1)
),对于分组变量 ( cumsum(Date!='')
),我们将 ( :=
) 'Date' 指定为 'Date' 的第一个元素 ( Date[1L]
)
library(data.table)
setDT(df1)[, Date:= Date[1L] , cumsum(Date!='')]
数据
df1 <- structure(list(Date = c("10/1/2013", "", "", "", "", "",
"10/2/2013",
"", "", "", ""), Id = c(3444L, 87873L, 1243L, 35473L, 7363L,
8335L, 4783L, 3355L, 4544L, 94453L, 33554L)), .Names = c("Date",
"Id"), class = "data.frame", row.names = c(NA, -11L))
关于r - 日期填充直到遇到下一个日期值 R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30131240/