R 如何进行非随机抽样
这是我拥有的随机数据,我想对它们进行排序,然后在不改变顺序的情况下分成相等的样本。我可以排序,也可以拆分,但这是随机的,但拆分成相等的样本,以便顺序保持不变是一个挑战。任何帮助都将不胜感激R 如何进行非随机抽样,r,dataframe,statistics,R,Dataframe,Statistics,这是我拥有的随机数据,我想对它们进行排序,然后在不改变顺序的情况下分成相等的样本。我可以排序,也可以拆分,但这是随机的,但拆分成相等的样本,以便顺序保持不变是一个挑战。任何帮助都将不胜感激 acct_num <- c('4525','52222','22892','67181','67733','737382', '5534','2228','7282','45622') Probability <- runif(10, min = 0, max = 10
acct_num <- c('4525','52222','22892','67181','67733','737382',
'5534','2228','7282','45622')
Probability <- runif(10, min = 0, max = 10)
acct_details <- data.frame(acct_num, Probability)
acct_details
acct_num Probability
4525 5.7406891
52222 0.8903079
22892 6.4435008
67181 2.2208483
67733 9.0374168
737382 0.8676233
5534 1.8472735
2228 8.4051774
7282 1.4664209
45622 1.8274586
下面的代码执行订单和拆分,但不维护订单。
例子:如果我把它分成5等份,它应该是
1,23,4,5,67,8,9,10
stopifnot(nrow(acct_details2) %% 5 == 0)
acct_details2 <- acct_details2[order(runif(nrow(acct_details2))),]
bins <- rep(1:5, nrow(acct_details2) / 5)
split(acct_details2, bins)
比较rep1:5、2和rep1:5,每个=2。你所需要的只是使用each参数。你能缩进第一行代码吗?你是否试图完成类似splitdf,rep1:5,each=2的任务?splitacct_details2,rep1:5,each=2如果你找到了解决方案,你可以回答你自己的问题,@sugandand。
acct_details2 <- acct_details[order(acct_details$Probability),] #orders the probability
split_data <- split(acct_details2, rep(1:5, each = 2)) # thanks to Gregor and hpesoj
$`1`
acct_num Probability
6 737382 0.9741298
1 4525 1.5790106
$`2`
acct_num Probability
8 2228 2.140016
7 5534 2.849498
$`3`
acct_num Probability
9 7282 6.134280
3 22892 6.375977
$`4`
acct_num Probability
2 52222 7.101398
10 45622 7.787715
$`5`
acct_num Probability
4 67181 8.928878
5 67733 9.610741