【问题标题】:R- replace values in a matrix with the average value of its group?R-用其组的平均值替换矩阵中的值?
【发布时间】:2012-11-21 16:25:52
【问题描述】:

我是 R 的新手,并且有一个足够简单的问题来回答;任何帮助将不胜感激。

情况是我有一个制表符分隔的数据矩阵(data matrix.txt),如下所示,最后一列包含组信息。

               sampleA    sampleB     sampleC   Group
    obs11        23.2      52.5       -86.3      1
    obs12       -86.3      32.5       -84.7      1
    obs41       -76.2      35.8       -16.3      2 
    obs74       23.2       32.5       -86.8      2
    obs82       -86.2      52.8       -83.2      3
    obs38       -36.2      59.5       -74.3      3

我想用该组的平均值替换每个组的值

如何在 R 中计算组平均值而不是行或列平均值?

我如何使用这个值来替换原始值? replace() 函数在这种情况下是否可用,还是仅用于替换两个已知值?

提前致谢

【问题讨论】:

    标签: r plyr


    【解决方案1】:

    ddply 包应该可以解决问题。

    dat <- as.data.frame(matrix(runif(80),ncol=4))
    dat$group <- sample(letters[1:4],size=20,replace=T)
    head(dat)
    
    library(plyr)
    ddply(.data = dat, .variables =.(group), colwise(mean))
    

    结果

      group        V1        V2        V3        V4
    1     a 0.4741673 0.7669612 0.5043857 0.5039938
    2     b 0.3648794 0.5776748 0.4033758 0.5748613
    3     c 0.1450466 0.5399372 0.2440170 0.5124578
    4     d 0.4249183 0.3252093 0.5467726 0.4416924
    

    【讨论】:

    • 您好,感谢您的提示,将考虑安装此包,我意识到我的问题应该更具体,当每组中的列数和行数(并在每个 mxtrix 中包含)是未知的,并且因组而异?
    • 请更准确,并举一个例子来说明您的问题的复杂性。但是,我的示例独立于行号和列号。
    猜你喜欢
    • 1970-01-01
    • 2012-05-06
    • 2018-08-05
    • 2018-08-23
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    相关资源
    最近更新 更多