我的数据有一个小问题(见下文)。我想创建一个表示此计算的新列:名为percentage
的新列,每个id
的 power * 100 / max(power) BUT。
例如:
id
LM01-PRD-S1
,在第1行,我们应该有22
(表示25 * 100/115)。
感谢您的宝贵帮助!
数据
time power hr fr VE VO2 VCO2 id
1 00:15 25 90 24 20 632 549 LM01-PRD-S1
2 00:28 25 92 23 21 679 597 LM01-PRD-S1
3 00:44 25 93 22 21 675 607 LM01-PRD-S1
4 01:00 25 93 20 19 680 577 LM01-PRD-S1
5 01:15 40 96 20 22 745 660 LM01-PRD-S1
6 01:29 40 98 21 22 764 675 LM01-PRD-S1
7 01:44 40 100 21 22 789 703 LM01-PRD-S1
8 01:59 40 100 20 23 805 734 LM01-PRD-S1
9 02:15 55 105 22 26 911 843 LM01-PRD-S1
10 02:30 55 105 20 25 881 831 LM01-PRD-S1
11 02:43 55 109 19 25 895 847 LM01-PRD-S1
12 02:57 55 112 21 25 908 868 LM01-PRD-S1
13 03:14 70 120 21 28 981 947 LM01-PRD-S1
14 03:29 70 120 21 29 1044 1021 LM01-PRD-S1
15 03:43 70 122 22 27 1066 1031 LM01-PRD-S1
16 03:58 70 127 19 30 1136 1122 LM01-PRD-S1
17 04:15 85 130 20 32 1181 1218 LM01-PRD-S1
18 04:29 85 141 21 32 1194 1216 LM01-PRD-S1
19 04:42 85 139 22 34 1231 1295 LM01-PRD-S1
20 04:58 85 139 19 32 1193 1268 LM01-PRD-S1
21 05:12 100 139 21 31 1192 1274 LM01-PRD-S1
22 05:30 100 146 21 38 1363 1460 LM01-PRD-S1
23 05:45 100 150 28 50 1551 1801 LM01-PRD-S1
24 05:57 100 148 30 51 1499 1810 LM01-PRD-S1
25 06:14 115 150 30 55 1564 1883 LM01-PRD-S1
26 06:30 115 153 31 56 1544 1892 LM01-PRD-S1
27 06:44 115 157 33 59 1545 2012 LM01-PRD-S1
28 06:55 115 157 34 62 1647 2091 LM01-PRD-S1
29 00:15 35 102 16 18 659 576 LB02-PRD-S1
30 00:28 35 101 17 19 729 613 LB02-PRD-S1
31 00:44 35 105 15 28 977 851 LB02-PRD-S1
32 00:59 35 96 16 28 886 852 LB02-PRD-S1
33 01:12 50 90 16 16 593 504 LB02-PRD-S1
34 01:28 50 106 18 17 737 552 LB02-PRD-S1
35 01:44 50 108 19 23 1053 775 LB02-PRD-S1
36 01:59 50 117 17 30 1236 1008 LB02-PRD-S1
37 02:13 65 113 18 29 1181 983 LB02-PRD-S1
38 02:29 65 114 15 31 1167 1016 LB02-PRD-S1
39 02:44 65 118 16 31 1167 1052 LB02-PRD-S1
40 02:59 65 114 17 28 1104 967 LB02-PRD-S1
41 03:13 80 120 17 35 1318 1172 LB02-PRD-S1
42 03:29 80 117 16 32 1236 1153 LB02-PRD-S1
43 03:43 80 122 17 31 1168 1094 LB02-PRD-S1
44 03:57 80 122 17 34 1312 1205 LB02-PRD-S1
45 04:14 95 126 18 37 1311 1274 LB02-PRD-S1
46 04:28 95 129 18 35 1248 1201 LB02-PRD-S1
47 04:44 95 131 15 33 1275 1196 LB02-PRD-S1
48 04:57 95 134 18 39 1444 1381 LB02-PRD-S1
49 05:13 110 134 19 43 1539 1472 LB02-PRD-S1
50 05:29 110 136 19 41 1417 1406 LB02-PRD-S1
51 05:44 110 137 20 43 1496 1437 LB02-PRD-S1
52 06:00 110 139 20 44 1561 1539 LB02-PRD-S1
53 06:14 125 142 21 46 1561 1560 LB02-PRD-S1
54 06:28 125 146 21 46 1535 1552 LB02-PRD-S1
55 06:44 125 148 23 51 1698 1703 LB02-PRD-S1
56 07:00 125 150 23 53 1725 1776 LB02-PRD-S1
57 07:13 140 151 22 52 1726 1760 LB02-PRD-S1
58 07:29 140 151 23 53 1713 1763 LB02-PRD-S1
59 07:44 140 153 25 55 1807 1836 LB02-PRD-S1
60 07:59 140 155 26 58 1897 1941 LB02-PRD-S1
61 08:15 155 153 26 59 1929 1963 LB02-PRD-S1
62 08:29 155 157 26 57 1843 1908 LB02-PRD-S1
63 08:44 155 160 28 65 1942 2065 LB02-PRD-S1
64 09:00 155 164 26 64 2011 2131 LB02-PRD-S1
65 09:14 170 166 26 65 2048 2178 LB02-PRD-S1
66 09:30 170 166 26 64 2069 2171 LB02-PRD-S1
67 09:45 170 169 25 64 2165 2269 LB02-PRD-S1
68 10:00 170 169 28 76 2328 2539 LB02-PRD-S1
69 10:14 185 169 30 76 2189 2449 LB02-PRD-S1
70 10:29 185 171 29 73 2225 2411 LB02-PRD-S1
71 10:44 185 171 29 68 2170 2292 LB02-PRD-S1
72 10:59 185 171 31 82 2458 2712 LB02-PRD-S1
73 11:14 200 171 33 89 2443 2780 LB02-PRD-S1
74 11:29 200 173 33 87 2465 2784 LB02-PRD-S1
75 11:44 200 176 32 88 2536 2853 LB02-PRD-S1
76 12:00 200 176 34 93 2571 2899 LB02-PRD-S1
77 12:15 215 176 36 98 2529 2924 LB02-PRD-S1
78 12:30 215 179 36 105 2602 3087 LB02-PRD-S1
79 12:45 215 179 39 111 2795 3282 LB02-PRD-S1
80 12:59 215 181 40 118 2679 3240 LB02-PRD-S1
81 13:15 230 179 40 113 2649 3160 LB02-PRD-S1
82 13:29 230 179 41 111 2601 3055 LB02-PRD-S1
83 13:45 230 176 42 116 2639 3129 LB02-PRD-S1
84 13:59 230 181 43 126 2683 3277 LB02-PRD-S1
85 14:15 245 181 47 123 2597 3160 LB02-PRD-S1
86 14:30 245 181 48 128 2482 3122 LB02-PRD-S1
87 00:15 25 101 20 18 712 584 GC03-PRD-S1
88 00:30 25 99 20 17 673 551 GC03-PRD-S1
89 00:45 25 97 20 17 686 559 GC03-PRD-S1
90 00:58 25 96 20 16 639 524 GC03-PRD-S1
91 01:13 40 99 19 16 647 518 GC03-PRD-S1
92 01:27 40 105 19 16 669 543 GC03-PRD-S1
93 01:45 40 107 21 18 723 598 GC03-PRD-S1
94 01:59 40 107 25 19 746 605 GC03-PRD-S1
95 02:12 55 109 23 20 775 645 GC03-PRD-S1
96 02:27 55 111 20 20 780 671 GC03-PRD-S1
97 02:41 55 116 21 21 811 710 GC03-PRD-S1
98 02:59 55 113 17 22 858 765 GC03-PRD-S1
99 03:13 70 117 21 23 900 789 GC03-PRD-S1
100 03:30 70 117 20 23 953 843 GC03-PRD-S1
101 03:45 70 120 20 25 980 882 GC03-PRD-S1
102 03:58 70 122 22 26 1000 916 GC03-PRD-S1
103 04:14 85 122 23 27 1049 961 GC03-PRD-S1
104 04:29 85 126 23 28 1072 992 GC03-PRD-S1
105 04:43 85 131 22 29 1110 1056 GC03-PRD-S1
106 04:59 85 130 22 30 1066 1047 GC03-PRD-S1
107 05:13 100 129 21 28 1166 1057 GC03-PRD-S1
108 05:29 100 137 27 34 1346 1247 GC03-PRD-S1
109 05:45 100 137 22 34 1272 1261 GC03-PRD-S1
110 06:00 100 136 20 33 1222 1235 GC03-PRD-S1
111 06:13 115 139 23 36 1321 1321 GC03-PRD-S1
112 06:29 115 142 23 37 1340 1377 GC03-PRD-S1
113 06:43 115 144 24 38 1362 1418 GC03-PRD-S1
114 06:59 115 150 27 44 1470 1579 GC03-PRD-S1
115 07:14 130 151 27 45 1466 1618 GC03-PRD-S1
116 07:30 130 153 31 54 1686 1875 GC03-PRD-S1
117 07:44 130 155 33 59 1679 1998 GC03-PRD-S1
118 07:59 130 157 33 59 1676 2021 GC03-PRD-S1
119 08:13 145 157 33 61 1700 2041 GC03-PRD-S1
120 08:29 145 160 35 64 1764 2120 GC03-PRD-S1
121 08:44 145 160 36 67 1765 2182 GC03-PRD-S1
122 08:59 145 162 40 71 1762 2208 GC03-PRD-S1
123 00:01 145 162 39 69 1754 2208 GC03-PRD-S1
124 00:15 60 127 27 40 1267 1274 GT04-PRD-S1
125 00:29 60 131 29 40 1264 1274 GT04-PRD-S1
126 00:44 60 133 30 40 1281 1298 GT04-PRD-S1
127 00:58 60 134 29 42 1304 1360 GT04-PRD-S1
128 01:14 80 134 28 40 1274 1324 GT04-PRD-S1
129 01:30 80 137 28 40 1337 1335 GT04-PRD-S1
130 01:45 80 144 29 45 1485 1501 GT04-PRD-S1
131 02:00 80 144 30 50 1573 1630 GT04-PRD-S1
132 02:14 100 148 30 47 1380 1478 GT04-PRD-S1
133 02:29 100 150 30 49 1520 1576 GT04-PRD-S1
134 02:45 100 153 31 50 1553 1589 GT04-PRD-S1
135 02:59 100 151 31 55 1735 1818 GT04-PRD-S1
136 03:13 120 153 32 65 1905 2146 GT04-PRD-S1
137 03:28 120 151 32 62 1748 2026 GT04-PRD-S1
138 03:44 120 160 31 61 1799 2041 GT04-PRD-S1
139 03:58 120 160 30 64 1810 2105 GT04-PRD-S1
140 04:13 140 164 33 73 1895 2314 GT04-PRD-S1
141 04:28 140 162 33 72 1966 2345 GT04-PRD-S1
142 04:44 140 166 36 79 2021 2470 GT04-PRD-S1
143 05:00 140 166 35 76 2022 2450 GT04-PRD-S1
144 05:14 160 164 37 78 2115 2491 GT04-PRD-S1
145 05:29 160 169 40 82 2147 2583 GT04-PRD-S1
146 05:44 160 169 38 83 2190 2647 GT04-PRD-S1
147 05:59 160 173 38 85 2202 2713 GT04-PRD-S1
148 06:15 180 171 38 88 2332 2837 GT04-PRD-S1
149 06:29 180 171 41 95 2321 2937 GT04-PRD-S1
150 06:45 180 176 39 94 2358 2994 GT04-PRD-S1
151 06:59 180 176 42 104 2339 3086 GT04-PRD-S1
152 07:09 200 176 44 105 2444 3186 GT04-PRD-S1
答案 0 :(得分:1)
在基数R中,我们可以使用ave
df$percentage <- with(df, power * 100/ave(power, id, FUN = max))
head(df)
# time power hr fr VE VO2 VCO2 id percentage
#1 00:15 25 90 24 20 632 549 LM01-PRD-S1 21.7
#2 00:28 25 92 23 21 679 597 LM01-PRD-S1 21.7
#3 00:44 25 93 22 21 675 607 LM01-PRD-S1 21.7
#4 01:00 25 93 20 19 680 577 LM01-PRD-S1 21.7
#5 01:15 40 96 20 22 745 660 LM01-PRD-S1 34.8
#6 01:29 40 98 21 22 764 675 LM01-PRD-S1 34.8
或与dplyr
library(dplyr)
df %>% group_by(id) %>% mutate(percentage = power*100/max(power))
和data.table
library(data.table)
setDT(df)[, percentage := power*100/max(power), by = id]