在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