【问题标题】:How to do non random sampling如何进行非随机抽样
【发布时间】:2018-10-07 05:19:28
【问题描述】:

这是我拥有的随机数据,我想对它们进行排序,然后在不更改顺序的情况下分成相等的样本。我可以订购也可以拆分,但这是随机的,但拆分成相等的样本以使顺序保持不变是挑战。任何帮助将不胜感激。

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,2)(3,4),(5,6)(7,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)

【问题讨论】:

  • 比较 rep(1:5, 2)rep(1:5, each = 2)。您只需要使用each 参数即可。
  • 你能缩进第一行代码吗?
  • 你想完成类似split(df, rep(1:5, each = 2))的事情吗?
  • split(acct_details2, rep(1:5, each = 2))
  • 如果您找到了解决方案,您可以回答自己的问题,@SugandAnand。

标签: r dataframe statistics


【解决方案1】:
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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-26
    • 2021-07-19
    • 2019-03-24
    • 1970-01-01
    • 2016-11-19
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多