Как выбрать столбец на основе частоты в R? - PullRequest
0 голосов
/ 15 октября 2018

В настоящее время есть следующие данные

enter image description here

Как вы можете видеть, вероятность того, что 1 произойдет, составляет 30%, 2 - 50%, а 3 - 20%.

Я хочу выбрать значения в этом столбце на основе этой вероятности

, поэтому я бы хотел что-то вроде этого

enter image description here

Как вы можете видеть - первые два столбца не затронуты

есть идеи о том, как это сделать - я думаю, что функция выборки поможет, но не уверена, как заставить ее работать

Ответы [ 2 ]

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

Если вы хотите воссоздать столбец с желаемыми вероятностями, а не просто перемешивать его текущие значения:

df$col3sample <- sapply(1:nrow(df), function(x) sample(3, size=1, prob=c(0.3, 0.5, 0.2), replace=TRUE))

Это создаст новый столбец в df с 1, 2 или3 назначается каждой строке, построенной с вероятностью 0,3 / 0,5 / 0,2.

   col1   col2 col3 col3sample
1    ab    red    2          3
2    as   blue    1          1
3    ad  green    2          2
4    af orange    1          2
5    ag  black    2          2
6    ah    red    1          1
7    aw  green    2          2
8    we orange    3          3
9    wr  black    2          1
10   et  white    3          2

Однако это допускает некоторые случайные изменения в распределении вероятности, поэтому вам, возможно, придется взять несколько выборок, чтобы получитьровно 30% 1 с, 50% 2 с и 20% 3 с.

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

Самый простой способ - перетасовать колонку ...

df$col3 <- sample(df$col3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...