【问题标题】:Calculate the average of the value of each row with each successive row in one column in R in loop在循环中计算R中一列中每一行的每一行的平均值
【发布时间】:2022-01-05 09:31:02
【问题描述】:

在 RI 中需要有第一个和第二个值的平均值,然后是第一个和第三个值,等等......然后是第二个和第一个值的平均值,所以它达到 96,因为那是多少个值我的文件有(总共,我需要 9216 个这样的平均值)最好以自动化方式进行,例如在一个循环中

【问题讨论】:

    标签: r loops row average


    【解决方案1】:

    您应该始终提供可重现的数据,例如:

    set.seed(42)
    N <- 96
    X <- round(runif(N, 1000, 9999))
    str(X)
    # num [1:96] 9232 9433 3575 8473 6775 ...
    

    现在你想要所有可能对的平均值:

    pairs <- expand.grid(seq(N), seq(N))
    str(pairs)
    # 'data.frame': 9216 obs. of  2 variables:
    #  $ Var1: int  1 2 3 4 5 6 7 8 9 10 ...
    #  $ Var2: int  1 1 1 1 1 1 1 1 1 1 ...
    #  - attr(*, "out.attrs")=List of 2
    #   ..$ dim     : int [1:2] 96 96
    #   ..$ dimnames:List of 2
    #   .. ..$ Var1: chr [1:96] "Var1= 1" "Var1= 2" "Var1= 3" "Var1= 4" ...
    #   .. ..$ Var2: chr [1:96] "Var2= 1" "Var2= 2" "Var2= 3" "Var2= 4" ...
    

    现在计算均值:

    X.mn <- apply(pairs, 1, function(x) mean(c(X[x[1]], X[x[2]])))
    str(X.mn)
    #  num [1:9216] 9232 9332 6404 8852 8004 ...
    summary(X.mn)
    #    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
    #    1002    4349    5707    5709    7154    9899 
    

    一旦您知道如何使用矢量化,通常就可以消除循环的需要。

    【讨论】:

      【解决方案2】:

      您能否至少提供您指定的示例中的示例输出?在描述中使用 etc... 来跟踪您的 word 问题很难。

      【讨论】:

        猜你喜欢
        • 2016-09-02
        • 2020-04-02
        • 2014-03-15
        • 1970-01-01
        • 2022-01-11
        • 1970-01-01
        • 2021-10-24
        • 2021-07-24
        • 1970-01-01
        相关资源
        最近更新 更多