在r中使用不同的dfs将类别映射到日期

在r中使用不同的dfs将类别映射到日期,r,R,我有以下输入数据: dates1 <- data.frame(datess = seq(as.Date('2020-05-01'),as.Date('2020-11-01'),by = "1 month"),Sales = 1) category <- data.frame(cat=c("a","b","c")) dates1您可以使用crossing tidyr::crossing(dates1, category) # A tibble: 21 x 3 # datess

我有以下输入数据:

dates1 <- data.frame(datess = seq(as.Date('2020-05-01'),as.Date('2020-11-01'),by = "1 month"),Sales = 1)
category <- data.frame(cat=c("a","b","c"))

dates1您可以使用
crossing

tidyr::crossing(dates1, category)

# A tibble: 21 x 3
#   datess     Sales cat  
#   <date>     <dbl> <chr>
# 1 2020-05-01     1 a    
# 2 2020-05-01     1 b    
# 3 2020-05-01     1 c    
# 4 2020-06-01     1 a    
# 5 2020-06-01     1 b    
# 6 2020-06-01     1 c    
# 7 2020-07-01     1 a    
# 8 2020-07-01     1 b    
# 9 2020-07-01     1 c    
#10 2020-08-01     1 a    
# … with 11 more rows

您可以使用
交叉

tidyr::crossing(dates1, category)

# A tibble: 21 x 3
#   datess     Sales cat  
#   <date>     <dbl> <chr>
# 1 2020-05-01     1 a    
# 2 2020-05-01     1 b    
# 3 2020-05-01     1 c    
# 4 2020-06-01     1 a    
# 5 2020-06-01     1 b    
# 6 2020-06-01     1 c    
# 7 2020-07-01     1 a    
# 8 2020-07-01     1 b    
# 9 2020-07-01     1 c    
#10 2020-08-01     1 a    
# … with 11 more rows
基本R解决方案:

setNames(do.call("rbind", lapply(category, cbind, dates1)), c("category", names(dates1)))
数据:

dates1 <- data.frame(datess = seq(as.Date('2020-05-01'),as.Date('2020-11-01'),by = "1 month"),Sales = 1)
category <- c("a", "b", "c")
dates1Base R解决方案:

setNames(do.call("rbind", lapply(category, cbind, dates1)), c("category", names(dates1)))
数据:

dates1 <- data.frame(datess = seq(as.Date('2020-05-01'),as.Date('2020-11-01'),by = "1 month"),Sales = 1)
category <- c("a", "b", "c")
日期1