R 对非';长度不一样

R 对非';长度不一样,r,dplyr,R,Dplyr,对于现有列,我想将日期列表排序到每一行,例如 tibble(x = c("a", "b", "c")) # A tibble: 3 x 1 x <chr> 1 a 2 b 3 c tibble(x=c(“a”、“b”、“c”)) #一个tibble:3x1 x 1A 2 b 3 c 我如何调整mutate以获得这个输出 # A tibble: 9 x 2 x dates

对于现有列,我想将日期列表排序到每一行,例如

tibble(x = c("a", "b", "c"))

# A tibble: 3 x 1
  x    
  <chr>
1 a    
2 b    
3 c 
tibble(x=c(“a”、“b”、“c”)) #一个tibble:3x1 x 1A 2 b 3 c 我如何调整mutate以获得这个输出

# A tibble: 9 x 2
  x     dates     
  <chr> <date>    
1 a     2021-01-01
2 a     2021-01-02
3 a     2021-01-03
4 b     2021-01-01
5 b     2021-01-02
6 b     2021-01-03
7 c     2021-01-01
8 c     2021-01-02
9 c     2021-01-03
#一个tible:9 x 2
x日期
1A 2021-01-01
2A 2021-01-02
3 a 2021-01-03
4B 2021-01-01
5B 2021-01-02
6B 2021-01-03
7 c 2021-01-01
8 c 2021-01-02
9 c 2021-01-03
这是否有效:

library(dplyr)
library(tidyr)
df %>% uncount(weights = 3) %>% group_by(x) %>% 
   mutate(dates = as.Date('2021-01-01') + row_number()-1)
# A tibble: 9 x 2
# Groups:   x [3]
  x     dates     
  <chr> <date>    
1 a     2021-01-01
2 a     2021-01-02
3 a     2021-01-03
4 b     2021-01-01
5 b     2021-01-02
6 b     2021-01-03
7 c     2021-01-01
8 c     2021-01-02
9 c     2021-01-03
库(dplyr)
图书馆(tidyr)
df%%>%未计数(权重=3)%%>%group_by(x)%%>%
变更(日期=截止日期('2021-01-01')+行编号()-1)
#一个tibble:9x2
#组别:x[3]
x日期
1A 2021-01-01
2A 2021-01-02
3 a 2021-01-03
4B 2021-01-01
5B 2021-01-02
6B 2021-01-03
7 c 2021-01-01
8 c 2021-01-02
9 c 2021-01-03
使用的数据:

df
# A tibble: 3 x 1
  x    
  <chr>
1 a    
2 b    
3 c    
df
#一个tibble:3x1
x
1A
2 b
3 c

使用
tidyr::crossing

df <- tibble(x = c("a", "b", "c"))

dates <- seq(as.Date('2021-01-01'), as.Date('2021-01-03'), by = '1 day')
tidyr::crossing(df, dates)

#   x     dates     
#  <chr> <date>    
#1 a     2021-01-01
#2 a     2021-01-02
#3 a     2021-01-03
#4 b     2021-01-01
#5 b     2021-01-02
#6 b     2021-01-03
#7 c     2021-01-01
#8 c     2021-01-02
#9 c     2021-01-03

df我们可以使用
扩展网格

library(tidyr)
expand_grid(df, dates)

看看
?tidyr::展开网格