【问题标题】:R data.table how to create duplicates [duplicate]R data.table如何创建重复项[重复]
【发布时间】:2019-09-13 06:55:57
【问题描述】:

我有:

dataDT <- data.table(A = 1:3, B = 1:3)
dataDT
   A B
1: 1 1
2: 2 2
3: 3 3

我想要:

dataDT <- data.table(A = c(1:3, 1:3), B = c(1:3, 1:3))
dataDT

   A B
1: 1 1
2: 2 2
3: 3 3
4: 1 1
5: 2 2
6: 3 3

即创建 x 个副本并在底行后追加

我试过了(结果不是我需要的):

dataDT1 <- splitstackshape::expandRows(dataset = dataDT, count = 2, count.is.col = FALSE)   # order not correct
dataDT1
   A B
1: 1 1
2: 1 1
3: 2 2
4: 2 2
5: 3 3
6: 3 3

另外(结果不是我需要的):

dataDT2 <- rbindlist(list(rep(dataDT, 2)))   # it creates columns
dataDT2
   A B A B
1: 1 1 1 1
2: 2 2 2 2
3: 3 3 3 3

任何人都可以推荐一种正确有效的方法吗?

【问题讨论】:

  • 最简单的一个:dataDT[rep(dataDT[, .I], 2)] (see also here)

标签: r duplicates data.table copy


【解决方案1】:

您可以使用rep

> x = 2; dataDT[rep(seq_len(nrow(dataDT)), x), ]
   A B
1: 1 1
2: 2 2
3: 3 3
4: 1 1
5: 2 2
6: 3 3

或者rbindlistreplicate

> x = 2; rbindlist(replicate(x, dataDT, simplify = F))
   A B
1: 1 1
2: 2 2
3: 3 3
4: 1 1
5: 2 2
6: 3 3

【讨论】:

    猜你喜欢
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 2018-07-20
    • 2014-12-04
    • 1970-01-01
    • 2020-06-21
    相关资源
    最近更新 更多