按“ID”创建行序列,将序列列用作
names_from
和
values_from
作为
pivot_wider
library(dplyr)
library(data.table)
library(tidyr)
df %>%
mutate(rn = rowid(ID)) %>%
pivot_wider(names_from = rn, values_from = c(category, date), names_sep = "")
-输出
# A tibble: 3 Ã 5
ID category1 category2 date1 date2
<dbl> <chr> <chr> <date> <date>
1 1 A B 2022-09-06 2022-08-27
2 2 A C 2022-09-06 2022-08-27
3 3 A C 2022-09-06 2022-08-27
或使用
row_number()
分组后创建序列列
df %>%
group_by(ID) %>%
mutate(rn = row_number()) %>%
ungroup %>%
pivot_wider(names_from = rn, values_from = c(category, date), names_sep = "")