根据A列将随机数分配给B列.A中的所有重复项都获得相同的随机数

时间:2017-04-13 19:31:30

标签: r random duplicates vectorization

我正在尝试根据另一列(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)

谢谢!

2 个答案:

答案 0 :(得分:1)

我假设您要选择“随机数”,因为您的列表看起来不是很随机。使用您的列表,您可以根据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

答案 1 :(得分:1)

有很多方法可以给这只猫上皮。我将创建一个随机数查找表,然后使用查找表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)