2017-07-24 159 views
1

我矩阵是这样的:[R如何在一列中的应用价值重塑矩阵

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 

回答

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 
+2

我以为他们要了矩阵? –

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 
+0

这个答案也可以。我选择了上面的答案,因为它首先出现。感谢昨天的快速反应。 – user1757436