【问题标题】:Create random values from sequence but with exact unique number of observations repeated randomly从序列中创建随机值,但具有随机重复的确切唯一数量的观察值
【发布时间】:2017-05-05 13:18:49
【问题描述】:

我希望从特定的数字序列中创建一个 9776 整数的随机向量,在本例中为从 1 到 14610,但唯一的观察数必须等于 2444,并且每个观察必须随机重复,即NOT 2444 独特的观察,每一个重复 4 次。

有什么建议吗?

谢谢

【问题讨论】:

  • 如果我们有 10 个具有 4 个唯一值的随机观察值,则唯一值的重复可能是 2、2、3、3、3、4、4、4、5、5 或2,3,3,3,3,4,4,4,5,5...
  • 是的……很好……这就是我想要的。重复可以是 1、3、5、10、24 或任何时间
  • 请随时编辑我的问题
  • 让我们用你的例子 fo4 2:5, sample(rep(sample(2:5), sample(length(2:5)))) 这里,长度是 10
  • 你能检查一下新的更新吗?在这里,您必须放宽条件之一,即 9776 个总元素,否则从数学上讲,它不起作用

标签: r dataframe random unique


【解决方案1】:

我们可以使用rep 得到length 约9776,然后执行sample

df <- data.frame(x= sample(rep(seq_len(2444), length.out=9776)))
length(unique(df$x))
#[1] 2444

如果我们需要将length.out 替换为each,也可以这样做

df1 <- data.frame(x= sample(rep(seq_len(2444), each = 4)))
length(unique(df1$x))
#[1] 2444

或者正如@lmo 提到的那样

df <- data.frame(x=sample(c(sample(2444), sample(2444, 9776-2444, replace=TRUE))))

或者

df <- data.frame(x = sample(rep(sample(2444), length.out = 9776)))
length(unique(df$x))
#[1] 2444

head(df$x)
#[1]  858 1505 1631  105   79  268
tail(df$x)
#[1]   51 1545  100 1398 2261  682

更新

随着 OP 的更新问题

df1 <- data.frame(x=sample(rep(head(sample(14610), 2444), each = 4)))
length(unique(df1$x))
#[1] 2444

更新2

df1 <- data.frame(x = sample(rep(head(sample(14610), 2444), 
                           sample(rep(1:4, length.out=2444))))) 
length(unique(df1$x))
#[1] 2444

table(table(df1$x))

#   1   2   3   4 
#  611 611 611 611 

【讨论】:

  • 好的,谢谢。我实际上有 2444 个唯一值。但每次观察都重复了4次!我认为这不是随机的.....
  • @aaaaa 这里复制不是随机的,只有sample 包装是
  • 糟糕。我看错了,他们想确保所有 2444 个数字在 9776 个采样元素中至少出现一次。
  • @aaaaa 请检查更新,因为我还创建了一个带有双 sample 的解决方案
  • 这是另一个版本:sample(c(sample(2444), sample(2444, 9776-2444, replace=TRUE)))。第二个sample 确保所有整数都存在,第三个填充剩余的9776。第一个sample 将这些值随机排列(置换)。我猜相当于sample(c(seq_len(2444), sample(2444, 9776-2444, replace=TRUE)))
猜你喜欢
  • 1970-01-01
  • 2019-02-21
  • 2014-04-11
  • 1970-01-01
  • 2011-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-08
相关资源
最近更新 更多