2016-03-09 5 views
0

Я пытаюсь смоделировать некоторые данные, показанные ниже для анализа в r, и мне нужно добавить столбец с категориями 'Debit & Credit', чтобы в конечном наборе данных у меня будет дебют «76%» & «24%» Кредит.Добавление категориальной переменной в dataframe в r в случайном порядке в зависимости от процента раз, когда каждая категория будет отображаться

cust_id trxn_date trxn_id trxn_amt 
1001 25-Jun-14 303703 373 
1001 13-Jun-14 283268 143 
1001 14-May-14 233493 580 
1001 3-Apr-14 164596 155 
1001 24-Mar-14 147658 651 
1001 22-Mar-14 144280 229 
1001 14-Mar-14 130655 100 
1001 11-Mar-14 125599 170 
1001 9-Mar-14 122245 674 
1001 1-Mar-14 108788 223 
1001 21-Feb-14 95177 68 
1001 16-Feb-14 86754 689 
1001 26-Jan-14 51920 141 


cust_id trxn_date trxn_id trxn_amt Trxn_type 
1001 25-Jun-14 303703 373  Debit 
1001 13-Jun-14 283268 143  Debit 
1001 14-May-14 233493 580  Debit 
1001 3-Apr-14 164596 155  Debit 
1001 24-Mar-14 147658 651  Debit 
1001 22-Mar-14 144280 229  Debit 
1001 14-Mar-14 130655 100  Debit 
1001 11-Mar-14 125599 170  Debit 
1001 9-Mar-14 122245 674  Debit 
1001 1-Mar-14 108788 223  Debit 
1001 21-Feb-14 95177 68  Credit 
1001 16-Feb-14 86754 689  Credit 
1001 26-Jan-14 51920 141  Credit 

Заранее спасибо

+0

Если вы считаете, что какой-либо из ответов решил вашу проблему, пожалуйста, подумайте о принятии его в качестве ответа, проверив отметку в вопросе голосования. Таким образом, вы поощряете тех, кто посвящает время здесь для небольшой репутации;) – PavoDive

+0

Я думал, что могу принять 2 ответа, чтобы показать свою благодарность за ваше время. Похож на @mtoto, и я писал тот же ответ примерно в то же время: | - PavoDive вчера – Dante

+0

вы можете выдвигать столько, сколько хотите, но можете принять только один. – mtoto

ответ

2

Мы могли бы использовать sample() случайным образом назначить каждое наблюдение либо Debit или Credit с заданной вероятностью.

df$Trxn_type <- sample(c("Debit", "Credit"), 
         size = nrow(df), 
         prob = c(0.76, 0.24), replace = TRUE) 
> df 
# cust_id trxn_date trxn_id trxn_amt Trxn_type 
#1  1001 25-Jun-14 303703  373  Debit 
#2  1001 13-Jun-14 283268  143 Credit 
#3  1001 14-May-14 233493  580  Debit 
#4  1001 3-Apr-14 164596  155  Debit 
#5  1001 24-Mar-14 147658  651  Debit 
#6  1001 22-Mar-14 144280  229 Credit 
#7  1001 14-Mar-14 130655  100 Credit 
#8  1001 11-Mar-14 125599  170  Debit 
#9  1001 9-Mar-14 122245  674  Debit 
#10 1001 1-Mar-14 108788  223  Debit 
#11 1001 21-Feb-14 95177  68  Debit 
#12 1001 16-Feb-14 86754  689  Debit 
#13 1001 26-Jan-14 51920  141  Debit 
2

предполагается, что ваш кадр данных называется a, то это будет работать:

a$type <- as.factor(sample(c("debit", "credit"), 
          size = nrow(a), 
          replace = TRUE, 
          prob = c(.76, .24))) 

что вы делаете там создают случайную выборку такие же размера, как с вероятностью появления определенной как вы заявили 76 % и 24%.

+0

Похож на @mtoto, и я писал тот же ответ примерно в то же время: | – PavoDive