gpt4 book ai didi

当维度不可分时,将大数据框的 nrows 减少到较小数据框的 nrows

转载 作者:行者123 更新时间:2023-12-01 01:36:37 24 4
gpt4 key购买 nike

我有两个数据框。一个是 ~133 行,一个是 ~4337 行。它们每个都有两列包含相同类型的信息。第一列中的太阳高度和第二列中的辐射。我想将大数据框的行数减少到小数据框的行数,以便我可以继续进行分析而不会出现维度错误。我不想将它们组合成一个数据框。

问题是,我不想丢失任何数据。经过进一步检查,我意识到我也不能做手段,因为这对我的数据没有物理意义。

我一直试图在 dplyr 中找到一些东西或 reshape2这将做到这一点,但到目前为止还没有运气。

笔记:

  • 为简单起见,示例中的尺寸小于我的真实世界尺寸

  • 此处提供的解决方案似乎很接近: Calculate the mean of every 13 rows in data frame in R

    但是,我遇到了舍入问题,导致结果新数据框中的行过多或过少。

    尝试实现上述链接解决方案的代码示例:
    set.seed(123)
    df1 <- data.frame(sunel = sample(c(-6:4), 133, replace = TRUE),
    rad = sample(c(1000:500000), 133, replace = TRUE))
    df2 <- data.frame(sunel = sample(c(-15:15), 4337, replace = TRUE),
    rad = sample(c(100:5000000), 4337, replace = TRUE))
    df2a <- df2[df2$sunel >= -6 & df2$sunel <= 4,]

    n <- (nrow(df2a) %/% 133) - 1
    df3 <- aggregate(df2a, list(rep(1:(nrow(df2a) %/% n+1), each = n, len = nrow(df2a))), mean)
    nrow(df1)
    # [1] 133
    nrow(df2a)
    # [1] 1520
    nrow(df3)
    # [1] 150
    min(df1$sunel);max(df1$sunel)
    # [1] -6
    # [1] 4
    min(df2a$sunel);max(df2a$sunel)
    # [1] -6
    # [1] 4
    min(df3$sunel);max(df3$sunel)
    # [1] -3.2
    # [1] 1.9
    nrow(df3a)
    # [1] 133

    我试图改变 n,但由于四舍五入,结果要么是 ~130 行(太少),要么太多(如示例所示)。另一个问题是对我来说保持大致相同的sunel范围很重要,而df3中的范围是 Not Acceptable 。

    这是我使用 caret 找到的黑客解决方案.我将不胜感激关于更优雅的解决方案的任何建议。
    library(caret)

    133/1520
    # [1] 0.0875

    inTrain <- createDataPartition(df2a$sunel, p = .0875, list = FALSE)
    nrow(inTrain)
    # [1] 135 #Nope

    inTrain <- createDataPartition(df2a$sunel, p = .0874, list = FALSE)
    nrow(inTrain)
    # [1] 135 #Still nope

    inTrain <- createDataPartition(df2a$sunel, p = .086, list = FALSE)
    nrow(inTrain)
    # [1] 133 #Awesome

    df3a <- df2a[inTrain, ]
    min(df3a$sunel);max(df3a$sunel)
    # [1] -6
    # [1] 4

    最佳答案

    我建议你自举。
    http://www.ats.ucla.edu/stat/r/library/bootstrap.htm

    重采样是您获取大数据集代表性样本的解决方案!

    关于当维度不可分时,将大数据框的 nrows 减少到较小数据框的 nrows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30987731/

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