R如何使用列

时间:2017-07-24 20:09:38

标签: r reshape

我有这样的矩阵:

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

2 个答案:

答案 0 :(得分:3)

对于一个简单的案例,您可以使用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

答案 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