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

问题描述 投票:1回答:3

Ciao:这是我有“拥有”的数据

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

这是我想要“想要”的数据

  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")

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

干杯!

r loops row paste
3个回答
1
投票

我正在为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

1
投票

李哲源 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')

1
投票
classes <- as.matrix(seq(100,101, by=1))
classes_rep <-matrix(classes, nrow=nrow(have)*nrow(classes))
want <- cbind(rbind(have, have), classes_rep)
© www.soinside.com 2019 - 2024. All rights reserved.