如何根据条件复制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
感谢。
答案 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