【问题标题】:Calculating percentage for each value in multiply columns. based on maximum value in each column using R计算乘法列中每个值的百分比。基于使用 R 的每列中的最大值
【发布时间】:2021-12-25 13:40:15
【问题描述】:

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

我的 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

代码有什么问题?

【问题讨论】:

    标签: r loops max percentage


    【解决方案1】:

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

    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
    

    【讨论】:

      猜你喜欢
      • 2018-12-24
      • 2013-12-27
      • 1970-01-01
      • 2015-01-17
      • 1970-01-01
      • 2021-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多