美文网首页ggplot集锦
R语言之对列求相对值

R语言之对列求相对值

作者: Oodelay | 来源:发表于2019-04-12 17:34 被阅读0次

    在数据处理过程中,有时候需要将数据框中的绝对值按照列转换为相对丰度矩阵,即每一列除以对应的列之和,其结果为每一列的和为1。可能会有以下解决方法。

    df = matrix(seq(50),nrow = 10, byrow = T)
    
    df

    作如下尝试

    1. 简单粗暴,结果错误
    res1 = df/colSums(df)
    
    Wrong

    这里的问题实际上在执行的过程是,每一列的每个元素依次循环除以列和,如下所示


    df/colSums(df)
    1. 两次转置
    res2 = t(t(df)/colSums(df))
    

    首先进行转置,然后,每一行分别除以对应的列和,再转置恢复为原来的格式


    t(df)/colSums(df)
    1. 将列和扩展为同原数据同维度的矩阵,对应列相除
    res3 <- df/matrix(rep(colSums(df),nrow(df)), nrow = nrow(df), byrow = T)
    

    1. sweep
    res4 <- sweep(df,2,colSums(df),`/`)
    

    1. scale
    res5 = scale(df, center=FALSE, scale=colSums(df))
    
    scale()函数的正确用法 标准差和均方根

    6.decostand

    res6 = decstand(df, method="total",margin = 2)
    

    对转换后的结果,对列求和

    colSums(res2);colSums(res3);colSums(res4);colSums(res5)
    
    Right

    相关文章

      网友评论

        本文标题:R语言之对列求相对值

        本文链接:https://www.haomeiwen.com/subject/fcthwqtx.html