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::展开网格