计算乘法列中每个值的百分比。基于使用 R 的每列中的最大值

Calculating percentage for each value in multiply columns. based on maximum value in each column using R

我试图形成一个循环,它从每列中获取最大值,然后用它来计算每列中其他值的百分比。以前有人问过类似的问题,但是给出的解决方案是计算百分比与我需要的相反。

我的df:

a b c d
1115.68 67.52 151.13 183.32
1083.16 53.75 136.70 202.56
1076.69 56.07 157.77 196.43

期望输出:

a b c d
100.00 100.00 95.79 90.50
97.09 79.61 86.65 100.00
96.51 83.05 100.00 96.97

当前输出,我以相反的方式得到百分比:

a b c d
100.00 6.05 13.55 16.43
100.00 4.96 12.62 18.70
100.00 5.21 14.65 18.24

我使用的代码是这样的:

output <- df
for (i in 1:nrow(df)) {
  highvalue <- max(df[i, 1:4])
  for (j in 1:4) {
    output[i, j] <- df[i, j] * 100/highvalue
  }
}
output

代码有什么问题?

您在行中找到最大值,而不是在列中。循环版本:

output <- df
for (i in 1:ncol(df)) {
  highvalue <- max(df[, i])
  output[, i] <- output[, i] / highvalue * 100
}

但是你可以使用好的代码版本:

library(dplyr)
output <- df / df %>% lapply(max) * 100