复制R数据框中的行并索引新的重复项

时间:2014-05-27 14:17:37

标签: r dataframe

如何根据条件复制R数据帧中的行:

Replicate each row of data.frame and specify the number of replications for each row

但我也想在新专栏中索引新的重复项。即,第一个副本将被索引为1,第二个为2,第三个为3 ......

考虑数据框:

df <- data.frame(var1=c('a', 'b', 'c'), var2=c('d', 'e', 'f'), freq=1:3)

>df
  var1 var2 freq
1    a    d    1
2    b    e    2
3    c    f    3

我可以通过这种方式基于列freq复制每一行:

df.expanded <- df[rep(row.names(df), df$freq),]

>df.expanded
  var1 var2 freq
1    a    d    1
2    b    e    2
3    b    e    2
4    c    f    3
5    c    f    3
6    c    f    3

我想要的是还有一个索引来区分这些新的重复项,如下所示:

>df.expanded
  var1 var2 freq  ind
1    a    d    1    1
2    b    e    2    1
3    b    e    2    2
4    c    f    3    1
5    c    f    3    2
6    c    f    3    3

感谢。

2 个答案:

答案 0 :(得分:2)

df.expanded$ind <- unlist(sapply(df$freq, seq_len))

答案 1 :(得分:1)

df.expanded$ind <- sequence(df$freq)
#    var1 var2 freq ind
#1      a    d    1   1
#2      b    e    2   1
#2.1    b    e    2   2
#3      c    f    3   1
#3.1    c    f    3   2
#3.2    c    f    3   3