Как тиражировать наблюдения как функцию значений другой переменной - PullRequest
0 голосов
/ 16 декабря 2018

Я хочу реплицировать наблюдения на основе значений переменной iptw, чтобы создать псевдопопуляции для дальнейшего анализа.

Например, если iptw=4.5, то следует создать weight=5 инаблюдение / строка умножается на 5. Аналогично, если iptw=2.3, то weight=2, и эта строка умножается на 2, что эквивалентно добавлению соответствующего наблюдения дважды к фрейму данных.

Вот мой набор данных:

dtNEW <- data.table(id = 1:4, x1 = 10:13, x2=21:24, iptw=c(2.3,0.6,4.5,0.1))

Есть похожий вопрос здесь , но решения там не отвечают на мой вопрос.

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018

Другой вариант - uncount из tidyr

library(tidyr)
uncount(dtNEW, round(iptw))
#    id x1 x2 iptw
#1:  1 10 21  2.3
#2:  1 10 21  2.3
#3:  2 11 22  0.6
#4:  3 12 23  4.5
#5:  3 12 23  4.5
#6:  3 12 23  4.5
#7:  3 12 23  4.5
0 голосов
/ 16 декабря 2018

Предполагая, что вы хотите повторить i-й ряд раунд (iptw [i]) раз:

dtNEW[rep(1:.N, round(iptw)), ]

давая:

   id x1 x2 iptw
1:  1 10 21  2.3
2:  1 10 21  2.3
3:  2 11 22  0.6
4:  3 12 23  4.5
5:  3 12 23  4.5
6:  3 12 23  4.5
7:  3 12 23  4.5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...