【问题标题】:Randomly create various subsets with different features from the original dataset using R使用 R 从原始数据集中随机创建具有不同特征的各种子集
【发布时间】:2021-12-27 19:37:01
【问题描述】:

我有一个包含 300 多个特征和一个响应列的数据集。我想知道是否可以使用 R 随机创建 4 个具有不同特征的子集。

例如:

数据集为 CSV 格式。 提前致谢。

【问题讨论】:

    标签: r


    【解决方案1】:

    如果您只想要随机功能,可以尝试这样的方法。请注意,这是基于发布的图像,但您提到您的真实数据具有 300 个特征。我不知道您的真实数据集是什么样的,但您应该能够轻松修改它以考虑实际数据集。

    set.seed(123)
    # create sample data
    sample_data <- data.frame(id = 1:7,
                              F1 = sample(1:10,7),
                              F2 = sample(1:10,7),
                              F3 = sample(1:10,7),
                              F4 = sample(1:10,7),
                              F5 = sample(1:10,7),
                              F6 = sample(1:10,7),
                              F7 = sample(1:10,7),
                              F8 = sample(1:10,7),
                              label = sample(0:1, 7, replace = T))
    
    # sample random factor columns
    subset1 <- sample_data[, c(1,sample(2:9,2),10)]
    subset2 <- sample_data[, c(1,sample(2:9,2),10)]
    subset3 <- sample_data[, c(1,sample(2:9,2),10)]
    subset4 <- sample_data[, c(1,sample(2:9,2),10)] 
    
    #subset1
    # id F8 F6 label
    #1  1  2  1     1
    #2  2  8  3     1
    #3  3  9 10     1
    #4  4 10  7     1
    #5  5  1  6     0
    #6  6  6  5     0
    #7  7  5  8     1
    
    

    【讨论】:

    • 非常感谢您的回答。但是,该解决方案在某些情况下会产生具有相似特征的子集。主要目标是获得具有独特且随机选择的特征的子集。
    • 好的,谢谢你的澄清——我还是不清楚,你想要四个数据子集中有多少特征?您希望将所有 300 个特征划分为四个子集,还是每个子集都有“n”个特征?
    • 是的,我希望将所有 300 个特征划分为 4 个子集,其中每个子集将具有 75 个随机选择的特征和响应列。
    【解决方案2】:

    感谢@jpsmith 的回答,我设法使用以下代码解决了这个问题:

    data <- read.csv("-----/file.csv")
    
    label <- data$label 
    
    subset1 <- data[, c(sample(1:300,75))]
    subset1$label <- label
    data = data[,!(names(data) %in% colnames(subset1))]
    
    subset2 <- data[, c(sample(1:225,75))]
    subset2$label <- label
    data = data[,!(names(data) %in% colnames(subset2))]
    
    subset3 <- data[, c(sample(1:150,75))]
    subset3$label <- label
    data = data[,!(names(data) %in% colnames(subset3))]
    
    subset4 <- data
    subset4$label <- label
    

    如果有改进解决方案的方法,请发布。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-09
      • 2021-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-05
      • 2020-12-20
      • 1970-01-01
      相关资源
      最近更新 更多