Повторите несколько элементов столбца переменное количество раз - PullRequest
0 голосов
/ 01 октября 2018

У меня есть фрейм данных, который выглядит следующим образом:

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

И так далее ...

1 Ответ

0 голосов
/ 01 октября 2018

Вы можете легко сделать это с пакетом 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...