在 R 中重复行 N 次并添加新的计数列

Duplicate rows in R N times and adding new count column

再见:这是我的数据"have"

  have = data.frame(c(1,2,3),
                      c(90,87,71),
                      c(600,601,602))
    colnames(have) <- c("STUDENT","SCORE","TYPE")

这是我要的数据"want"

  want = data.frame(c(1,1,2,2,3,3),
                      c(90,90,87,87,71,71),
                      c(600,600,601,601,602,602),
                      c(100,101,100,101,100,101))

    colnames(want) <- c("STUDENT","SCORE","TYPE","CLASS")

如上所示,从 "have" 数据开始,我想为每个学生复制该行;添加新列 "CLASS",STUDENT 的第一行等于 100,STUDENT 的第二行等于 101。

干杯!

李哲源 plus Axeman provided the answers

## R core
data.frame(have[rep(1:nrow(have), each = 2), ], CLASS = c(100, 101),
           row.names = seq_len(2 * nrow(have))) 

## dplyr
dplyr::bind_rows('100' = have, '101' = have, .id = 'CLASS')
classes <- as.matrix(seq(100,101, by=1))
classes_rep <-matrix(classes, nrow=nrow(have)*nrow(classes))
want <- cbind(rbind(have, have), classes_rep)

我正在为 merge 创建一个附加密钥

have$key=1
mergedf=data.frame('CLASS'=c(100,101),'key'=1)
merge(have,mergedf,all.x=T)
  key STUDENT SCORE TYPE CLASS
1   1       1    90  600   100
2   1       1    90  600   101
3   1       2    87  601   100
4   1       2    87  601   101
5   1       3    71  602   100
6   1       3    71  602   101