美文网首页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