从序列中创建随机值,但随机重复观察的确切唯一数量

Create random values from sequence but with exact unique number of observations repeated randomly

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

有什么建议吗?

谢谢

我们可以使用rep得到关于9776的length然后做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