2017-09-16 75 views
0

早上好,R中的匹配日期

我有关于购买店主的数据框。他们不会每天发生。 它有两列:第一个描述日期,第二个数量在那个日期买了。

我想将它转换成日常数据,完成原始数据集;所以我创建了一个序列: “a < - seq(as.Date(”2013/11/19“),as.Date(”2017/04/22“),”days“)”

第一个日期对应于原始数据集的第一次购买和最后一次的第二次购买之一。

这些类都是“日期”。

我怎样才能合并两个数据集的“日期”,即使很明显,他们有不同的行的长度?我想有一个数据帧与每天日期”为第一,以及“数量”关于第二一个,与那里购买没有发生。

问候

+0

这将是一个左连接操作:)您可以使用dplyr软件包为该 – ira

回答

1

使用基础R:

# create sample data frame with sales data 
test <- data.frame(date = as.Date(c("2017/08/12", "2017/08/15", "2017/09/02")), quantity = c(3,2,1)) 
# create the date range 
dates <- data.frame(date = seq(min(test$date), max(test$date), by = "day")) 
# perform the left join 
# (keeping all rows from "dates", and joining the sales dataset to them) 
result <- merge(dates, test, by.y = "date", by.x = "date", all.x = TRUE) 

在合并功能,by.y和by.x是用于连接数据集,而all.x告诉你的列,所有行从x(在这种情况下为dates)应该保留在结果数据帧中。

+0

然后可以将NA转换为0后:result [is.na(result)] < - 0 –