R如何使用列中的值重塑矩阵

R How to reshape matrix using value in a column

我有这样的矩阵:

ID     Count
1      2
2      3
3      2

我想创建一个矩阵,其中 ID 的行数等于 Count 的值,同时添加一个包含 [=12= 中每一行索引的新列] 价值。对于上面的矩阵,结果应该是:

ID   Index
1    1
1    2
2    1
2    2
2    3
3    1
3    2

对于简单的情况,您可以只使用 repsequence

ID=c(1,2,3)
Count=c(2,3,2)
cbind(ID=rep(ID, Count), Index=sequence(Count))
#     ID Index
#[1,]  1     1
#[2,]  1     2
#[3,]  2     1
#[4,]  2     2
#[5,]  2     3
#[6,]  3     1
#[7,]  3     2

使用tidyverse

library(tidyverse)
df1 <- df %>% 
          group_by(ID) %>% 
          nest() %>% 
          mutate(data=map(data,~seq_along(1:.x$Count))) %>% 
          unnest(data)

输出

     ID  data
1     1     1
2     1     2
3     2     1
4     2     2
5     2     3
6     3     1
7     3     2