R中行数据的规范化

Normalisation of data in rows in R

我想规范化数据框行中的值。 换句话说,将给定列中的每一行除以从给定列中所有行的总和与行的最低总和计算得出的比率。这是我的例子:

df <- data.frame(x = 5:1, y = 2:6, z = 11:25)

查找总和最低的列

sum(df$x)
sum(df$y)
sum(df$z)

获取标准化值

df$x_norm <- df$x/(sum(df$x)/sum(df$x))
df$y_norm <- df$y/(sum(df$y)/sum(df$x))
df$z_norm <- df$z/(sum(df$z)/sum(df$x))

我们可以更快地通过获取列总和 (colSums),除以 'v1' 的最小值,最后将数据集除以 'v2' 以创建新列

v1 <- colSums(df)
v2 <- v1/min(v1)
df[paste0(names(df), "_norm")] <- t(t(df)/v2)