我有两个数据框。A:
id date
1 2010-05-08
2 2012-08-08
3 2013-06-23
B:
id date1
1 2010-05-09
2 2012-08-08
我需要按ID合并两个数据帧,还需要将表2中的日期=表1中的日期+1天。进一步标记合并为TRUE的行。
最终输出为A:
id date date1 flag
1 2010-05-08 2010-05-09 1
2 2012-08-08 NA NA
3 2013-06-23 NA NA
生成数据的代码-
A <- data.frame(customer = c(1,2,3),
application_date = c("2010-05-08", "2012-08-08", "2013-06-23"))
B <- data.frame(customer = c(1,2),
application_date = c("2010-05-09", "2012-08-08"))
这个怎么样?
数据:
A <- data.frame(customer = c(1,2,3),
application_date = c("2010-05-08", "2012-08-08", "2013-06-23"))
B <- data.frame(customer = c(1,2),
application_date = c("2010-05-09", "2012-08-08"))
DPLYR:
library(dplyr)
data <- left_join(A, B, by = "customer")
data %>%
mutate(logic = if_else(as.Date(data$application_date.x) + 1 == as.Date(data$application_date.y), 1, 0)) %>%
rename("id" = "customer",
"date" = "application_date.x",
"date1" = "application_date.y",
"flag" = "logic")
输出:
id date date1 flag
1 2010-05-08 2010-05-09 1
2 2012-08-08 2012-08-08 0
3 2013-06-23 <NA> NA
DATA.TABLE:
library(data.table)
data_2 <- merge.data.table(A, B, by = "customer", all.x=TRUE)
data_2[, logic:= (ifelse(as.Date(data$application_date.x) + 1 == as.Date(data$application_date.y), 1, 0))]
setnames(data_2, old = c("customer", "application_date.x", "application_date.y", "logic"),
new = c("id", "date", "date1", "flag"))
输出:
id date date1 flag
1 2010-05-08 2010-05-09 1
2 2012-08-08 2012-08-08 0
3 2013-06-23 <NA> NA
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句