根据每个类别出现的百分比随机将分类变量添加到 r 中的数据框

Adding categorical variable to a dataframe in r randomly depending on the percent times each category will appear

我正在尝试模拟下面显示的一些数据以在 r 中进行分析,我需要添加一个类别为“借方和贷方”的列,这样在最终数据集中我将有“76%”借方和“24%” ' 致谢。

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

提前致谢

我们可以使用 sample() 以给定的概率将每个观察值随机分配给 DebitCredit

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

假设您的数据框名为 a,那么这将起作用:

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

你在那里做的是创建一个随机样本,其大小与 a 的发生概率定义为 76% 和 24%。