我有一个data.frame
orig.DF<-data.frame(V1=c("A", "B", "C"), V2=c(3,2,4))
我必须扩展它,以便采用以下形式
A 1
A 2
A 3
B 1
B 2
C 1
C 2
C 3
C 4
我尝试了taaply
和ave
,但我无法将其计入1:x
并相应地重复V1
答案 0 :(得分:9)
df <- data.frame(V1 = c("A", "B", "C"), V2 = c(3, 2, 4))
data.frame(x = rep(df$V1, df$V2), y = sequence(df$V2))
x y
1 A 1
2 A 2
3 A 3
4 B 1
5 B 2
6 C 1
7 C 2
8 C 3
9 C 4
答案 1 :(得分:1)
这是一种方法:
do.call(
rbind,
apply(orig.DF, 1, function(row) expand.grid(row["V1"], 1:row["V2"]))
)