我想规范数据框行中的值。 换句话说,将给定列中的每一行除以从给定列中所有行的总和到行的最低总和计算的比率。这是我的例子:
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))
答案 0 :(得分:2)
我们可以通过获取列总和(colSums
),将其除以“v1”的最小值,然后最终除以数据集,以更快的方式执行此操作,而不是单独重复每列的操作。 'v2'创建新列
v1 <- colSums(df)
v2 <- v1/min(v1)
df[paste0(names(df), "_norm")] <- t(t(df)/v2)