在R中,寻找一种更有效的方法来计算列中的最大值与同一列中的所有值之间的差异[重复]

Posted

技术标签:

【中文标题】在R中,寻找一种更有效的方法来计算列中的最大值与同一列中的所有值之间的差异[重复]【英文标题】:In R, looking for a more efficient way to calculate the differences between the largest value in a column and all values in the same column [duplicate] 【发布时间】:2020-11-08 12:47:16 【问题描述】:

使用 R,我试图找到一种更有效的方法来计算列中的最大值与同一列中的每个值之间的差异。我能够做到这一点,但是代码看起来很庞大(我创建了一个向量,其中每个值都是列的最大值),我希望有人可以演示一种更有效的方法,也许使用 apply 命令?

a<-data.frame("Group Name"=c('Group 1','Group 2', 'Group 3', 'Group 4','Group 5', 'Group 6'),
          "app 1"=c(28,28,27,28,29,28),
          "app 2"=c(32,31,29,33,35,32),
          "app 3"=c(44,43,42,45,46,44),
          "app 4"=c(48,48,47,48,49,48),
          "app 5"=c(38,36,35,39,41,38),
          "app 6"=c(26,26,25,26,27,26))

a$Avg_score=apply(a[,-1],1,mean)
a$max_mean_diff<-c(max(a$Avg_score),max(a$Avg_score),max(a$Avg_score),
             max(a$Avg_score),max(a$Avg_score),max(a$Avg_score))-a$Avg_score
View(a)

【问题讨论】:

【参考方案1】:

这里不需要apply,因为你有rowMeans 函数,它返回每一行的平均值。然后,您可以用maxAvg_score 减去Avg_score。你不需要重复max(a$Avg_score)来使长度与a$Avg_score相等,R使用回收技术来匹配较短对象的长度和较长对象的长度。

a$Avg_score <- rowMeans(a[-1], na.rm = TRUE)
a$max_diff <- max(a$Avg_score) - a$Avg_score
a
#  Group.Name app.1 app.2 app.3 app.4 app.5 app.6 Avg_score max_diff
#1    Group 1    28    32    44    48    38    26  36.00000 1.833333
#2    Group 2    28    31    43    48    36    26  35.33333 2.500000
#3    Group 3    27    29    42    47    35    25  34.16667 3.666667
#4    Group 4    28    33    45    48    39    26  36.50000 1.333333
#5    Group 5    29    35    46    49    41    27  37.83333 0.000000
#6    Group 6    28    32    44    48    38    26  36.00000 1.833333

【讨论】:

以上是关于在R中,寻找一种更有效的方法来计算列中的最大值与同一列中的所有值之间的差异[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在R中的几列中获取月度均值的有效方法

有没有一种更有效的方法来枚举python或R中离散随机变量的每个可能结果的概率?

我正在寻找一种更短/更好的方法来从我的核心数据应用程序中的 NSSet 获取第一个对象

寻找一种更有效(和可移植)的方式在 unix 中获取(数字)文件权限

寻找局部最大值和最小值

最大化复杂多变量函数的计算有效方法