我修改了您的代码如下。请注意,我使用了
data_frame
函数以避免创建因子列。对我来说,在一个数据帧上工作更容易,所以我使用
left_join
首先合并两个数据帧。之后,我使用
first
中的函数
case_when
打电话确认只使用了一个号码。
df3
是最终输出。
library(dplyr)
library(lubridate)
df1 <- data_frame(type= c("invite","reminder", "final"))
df2 <- data_frame(delivery_date = date('2018-05-07'))
df3 <- df1 %>%
left_join(df2 %>% mutate(type = "invite"), by = "type") %>%
mutate(delivery_date = case_when(
type %in% "invite" ~ first(delivery_date),
type %in% "reminder" ~ first(delivery_date) + days(2),
type %in% "final" ~ first(delivery_date) + days(4)
)) %>%
rename(send_date = delivery_date)
df3
# # A tibble: 3 x 2
# type send_date
# <chr> <date>
# 1 invite 2018-05-07
# 2 reminder 2018-05-09
# 3 final 2018-05-11