gpt4 book ai didi

将数据帧随机抽样到R中的3个组中

转载 作者:行者123 更新时间:2023-12-03 15:25:24 26 4
gpt4 key购买 nike

目标:将数据帧随机分为3个样本。

  • 包含60%的行的一个样本
  • 其他两个样本,占
  • 行的20%
  • 样本不应重复其他样本(即未经替换的样本)。

  • 这是一个笨拙的解决方案:
    allrows <- 1:nrow(mtcars)

    set.seed(7)
    trainrows <- sample(allrows, replace = F, size = 0.6*length(allrows))
    test_cvrows <- allrows[-trainrows]
    testrows <- sample(test_cvrows, replace=F, size = 0.5*length(test_cvrows))
    cvrows <- test_cvrows[-which(test_cvrows %in% testrows)]

    train <- mtcars[trainrows,]
    test <- mtcars[testrows,]
    cvr <- mtcars[cvrows,]

    必须有一个简单的东西,也许在包装中。 dplyr具有 sample_frac函数,但这似乎是针对单个样本,而不是拆分为多个样本。

    接近但不完全是此问题的答案:
    Random Sample with multiple probabilities in R

    最佳答案

    您需要精确的分区吗?如果不,

    set.seed(7)
    ss <- sample(1:3,size=nrow(mtcars),replace=TRUE,prob=c(0.6,0.2,0.2))
    train <- mtcars[ss==1,]
    test <- mtcars[ss==2,]
    cvr <- mtcars[ss==3,]

    应该做。

    或者,就像@Frank在评论中说的那样,您可以 split()原始数据以将其保留为列表的元素:
    mycars <- setNames(split(mtcars,ss), c("train","test","cvr"))

    关于将数据帧随机抽样到R中的3个组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34028371/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com