如何找到多个变量列中最大组的百分比

问题描述 投票:3回答:1

我有一个看起来像这样的数据集df

Experiment Ch1    Ch2     Ch3     Ch4
exp_1   -1548   -19296  -65764  -64392
exp_1   -1572   -19304  -65756  -64392
exp_1   -1588   -19284  -65748  -64400
exp_1   -1580   -19292  -65760  -64392
exp_1   -1584   -19292  -65744  -64388
exp_1   -1580   -19292  -65756  -64408
exp_1   -1612   -19280  -65748  -64428
exp_2   -1620   -19276  -65740  -64464
exp_2   -1632   -19272  -65728  -64452
exp_2   -1636   -19268  -65732  -64464
exp_2   -1644   -19260  -65728  -64476
exp_2   -1652   -19268  -65736  -64476
exp_2   -1652   -19292  -65728  -64484
exp_2   -1660   -19268  -65740  -64480
exp_2   -1648   -19276  -65736  -64492
exp_3   -1664   -19276  -65736  -64504
exp_3   -1672   -19260  -65752  -64496
exp_3   -1668   -19276  -65728  -64496
exp_3   -1684   -19272  -65732  -64476
exp_3   -1676   -19260  -65728  -64476
exp_3   -1672   -19264  -65716  -64492
exp_3   -1680   -19268  -65732  -64480
exp_3   -1668   -19276  -65728  -64496
exp_3   -1684   -19272  -65732  -64476

我想根据相应的“实验编号”生成一列显示每组我的值的最大值的百分比。

诸如此类:

Experiment Ch1  %.Ch1    Ch2    %.Ch2    Ch3    %.Ch3    Ch4    %.Ch4
exp_1   -1548   100.00  -19296  99.92   -65764  99.97   -64392  99.99
exp_1   -1572   98.47   -19304  99.88   -65756  99.98   -64392  99.99
exp_1   -1588   97.48   -19284  99.98   -65748  99.99   -64400  99.98
exp_1   -1580   97.97   -19292  99.94   -65760  99.98   -64392  99.99
exp_1   -1584   97.73   -19292  99.94   -65744  100.00  -64388  100.00
exp_1   -1580   97.97   -19292  99.94   -65756  99.98   -64408  99.97
exp_1   -1612   96.03   -19280  100.00  -65748  99.99   -64428  99.94
exp_2   -1620   100.00  -19276  99.92   -65740  99.98   -64464  99.98
exp_2   -1632   99.26   -19272  99.94   -65728  100.00  -64452  100.00
exp_2   -1636   99.02   -19268  99.96   -65732  99.99   -64464  99.98
exp_2   -1644   98.54   -19260  100.00  -65728  100.00  -64476  99.96
exp_2   -1652   98.06   -19268  99.96   -65736  99.99   -64476  99.96
exp_2   -1652   98.06   -19292  99.83   -65728  100.00  -64484  99.95
exp_2   -1660   97.59   -19268  99.96   -65740  99.98   -64480  99.96
exp_2   -1648   98.30   -19276  99.92   -65736  99.99   -64492  99.94
exp_3   -1664   100.00  -19276  99.92   -65736  99.97   -64504  99.96
exp_3   -1672   99.52   -19260  100.00  -65752  99.95   -64496  99.97
exp_3   -1668   99.76   -19276  99.92   -65728  99.98   -64496  99.97
exp_3   -1684   98.81   -19272  99.94   -65732  99.98   -64476  100.00
exp_3   -1676   99.28   -19260  100.00  -65728  99.98   -64476  100.00
exp_3   -1672   99.52   -19264  99.98   -65716  100.00  -64492  99.98
exp_3   -1680   99.05   -19268  99.96   -65732  99.98   -64480  99.99
exp_3   -1668   99.76   -19276  99.92   -65728  99.98   -64496  99.97
exp_3   -1684   98.81   -19272  99.94   -65732  99.98   -64476  100.00

我知道该解决方案很可能可以通过Base R或dplyr的group_by函数来完成,但我仍然坚持如何一次处理多列。任何帮助,将不胜感激!

r group-by dplyr tidyverse sapply
1个回答
2
投票

类似这样的东西:

© www.soinside.com 2019 - 2024. All rights reserved.