我想根據另一列(A)中的數字隨機地將數字分配給列(B)。如果A列有重複,我希望那些重複的分配有相同的隨機數。根據列A爲列B分配隨機數。A中的所有重複項獲得相同的隨機數
ColA=c(112,111,004,678,112,262,963)
RandomNumbers=c(.02, .08,.03,.05, .09,.01,.07)
ColB=c(.09, .02,.01,.03,.09,.08,.05)
謝謝!
我想根據另一列(A)中的數字隨機地將數字分配給列(B)。如果A列有重複,我希望那些重複的分配有相同的隨機數。根據列A爲列B分配隨機數。A中的所有重複項獲得相同的隨機數
ColA=c(112,111,004,678,112,262,963)
RandomNumbers=c(.02, .08,.03,.05, .09,.01,.07)
ColB=c(.09, .02,.01,.03,.09,.08,.05)
謝謝!
我假設你想選擇「隨機數」,因爲你的列表看起來不是很隨機。使用您的列表,您可以根據ColA中的值爲每個「隨機」數字指定一個名稱並參考該名稱。
names(RandomNumbers) = unique(ColA)
ColB = RandomNumbers[as.character(ColA)]
112 111 4 678 112 262 963
0.02 0.08 0.03 0.05 0.02 0.09 0.01
我使用runif來獲取隨機數字。以上只是爲了簡化。這絕對有效!非常感謝G5W – Tracy
有很多方法去皮膚這隻貓。我將創建一個隨機數查找表,然後用查找表left_join原始列表,如下所示。但這只是一個可能的解決方案:
library(dplyr)
Df <- data.frame(ColA =c (112,112,004,678,112,262,963))
LookUpDf <- data.frame(ColA = unique(Df$ColA),
randNum = runif(length(unique(Df$ColA))))
left_join(Df, LookUpDf)
聽起來像你想要的與隨機數字無關:你正在尋找一個散列函數。 –
我使用runif來創建RandomNumbers變量。以上只是一個例子。 – Tracy