重复多个列元素不同的次数

时间:2018-09-30 22:13:41

标签: r

我有一个看起来像这样的数据框:

test <- data.frame(k = 0:5, A = sample(6), B = sample(6), C = sample(6))

k A B C
0 4 5 0
1 2 3 8
2 3 2 2
3 0 0 0
4 1 0 2

我正在尝试重复A指定的次数BCk的每个元素,然后将新矢量存储在新数据中框架看起来像这样:

A B C
0 0 1
0 0 1
0 0 1
0 0 1
1 0 1
1 1 1
2 1 1

依此类推...

1 个答案:

答案 0 :(得分:1)

您可以使用data.table软件包轻松地做到这一点。

test <- data.frame(k = 0:5, A = sample(6), B = sample(6), C = sample(6))
library(data.table)
setDT(test)
test[, sapply(.SD, function(x) rep(k, x)), .SDcols = colnames(test)[-1]]

此处执行功能function(x) rep(k, x),其中xA:C.SDcols = colnames(test)[-1])列。

结果:

      A B C
 [1,] 0 0 0
 [2,] 0 0 0
 [3,] 0 1 1
 [4,] 0 1 1
 [5,] 0 1 1
 [6,] 0 1 1
 [7,] 1 1 1
 [8,] 1 2 1
 [9,] 2 3 2
[10,] 3 3 3
[11,] 3 3 3
[12,] 3 4 3
[13,] 4 4 4
[14,] 4 4 4
[15,] 4 4 4
[16,] 4 4 4
[17,] 5 4 5
[18,] 5 5 5
[19,] 5 5 5
[20,] 5 5 5
[21,] 5 5 5