我有这样的矩阵:
ID Count
1 2
2 3
3 2
我想创建一个矩阵,其中ID
的行数等于Count
的值,同时添加一个新列,其中包含ID
值中每行的索引。对于上面的矩阵,结果应为:
ID Index
1 1
1 2
2 1
2 2
2 3
3 1
3 2
答案 0 :(得分:3)
对于一个简单的案例,您可以使用rep
和sequence
。
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
答案 1 :(得分:1)
使用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