我有一个看起来像这样的数据框:
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
指定的次数B
,C
和k
的每个元素,然后将新矢量存储在新数据中框架看起来像这样:
A B C
0 0 1
0 0 1
0 0 1
0 0 1
1 0 1
1 1 1
2 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)
,其中x
是A: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