0
使用不同的概率行具有這樣的數據幀:隨機分配不同的值,以作爲R
ID var
1 NA
2 NA
3 NA
4 NA
...
我需要隨機地分配20個%的行var
值是A,和30%的行爲B,和50%的行是C.
有沒有一些有效的方法來解決這個問題?
使用不同的概率行具有這樣的數據幀:隨機分配不同的值,以作爲R
ID var
1 NA
2 NA
3 NA
4 NA
...
我需要隨機地分配20個%的行var
值是A,和30%的行爲B,和50%的行是C.
有沒有一些有效的方法來解決這個問題?
假設你有數據框名爲DF: 那麼你可以這樣寫:
randvar = sample(c('A','B','C'),size = nrow(df),prob = c(0.2,0.3,0.5),replace = TRUE)
df$var = randvar
假設你想要的 「A」 s是正確的20%%,因此,做30% 「B」 和 「C」在50% 那麼它是不是一個行代碼,假設你的C(0.2,0.3,0.5)* df_size是所有整我的回答是:
n = nrow(df)
df$var = "C" #initialize all value to be "C"
index = 1:n
indexa = sample(index,0.2*n) #pick 20% index for "A"
indexb = sample(index[-indexa],0.3*n) #pick 30% index for "B" need to rule out the "A"s you already picked
df$var[indexa] = "A" #assign "A" to df$var at indexa
df$var[indexb] = "B" #assign "B" to df$var at indexb
#the rest 50% is "C"
並且如果c(0.2,0.3,0.5)* df_size不是整數,則需要用round(0.2 * n)替換0.2 * n,round(0.3 * n)替換爲0.3 * n等等 – cloudscomputes
'體(C( 「A」, 「B」, 「C」),nrow(df),prob = c(0.2,0.3,0.5),replace = TRUE)'隨機抽樣,但因爲它是隨機的,所以不會以20/30/50分割 - 你需要嗎? d比例是準確的還是你想根據這些概率進行抽樣? – Marius