Если вы хотите воссоздать столбец с желаемыми вероятностями, а не просто перемешивать его текущие значения:
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 с.