對于不同型別的鍛煉,我有data.frame多個具有相似名稱的列,記錄使用的重量、重復次數和組數。在我的 MWE 中,它是二頭肌彎舉和側平舉。所有不同的練習都有相似的結束列名稱:Wt Sets Reps
有沒有辦法Wt * Reps * Sets為每個練習計算,將結果保存為一個新的列 ending Load,然后添加所有以Loadfor結尾的列Total_load?
MWE:
exercise = data.frame(BicWt= c( 3,3,4),
BicSets = c(2,2,2),
BicReps = c(10,12,12),
LatWt = c(4,4,4),
LatSets = c( 2,2,2),
LatReps = c(6,8,10))
BicWt BicSets BicReps LatWt LatSets LatReps
1 3 2 10 4 2 6
2 3 2 12 4 2 8
3 4 2 12 4 2 10
期望的輸出是:
BicWt BicSets BicReps BicLoad LatWt LatSets LatReps LatLoad Total_Load
1 3 2 10 60 4 2 6 48 108
2 3 2 12 72 4 2 8 64 136
3 4 2 12 96 4 2 10 80 176
其中BicLoad= BicWt* BicSets*BicReps等。
編輯
一些練習列在 Wt、Reps 和 Sets 之前有大寫字母。
exercise = data.frame(BicWt= c( 3,3,4),
BicSets = c(2,2,2),
BicReps = c(10,12,12),
LatWt = c(4,4,4),
LatSets = c( 2,2,2),
LatReps = c(6,8,10),
PullUpWt = c(5,5,5),
PullUpSets = c(2,2,2),
PullUpReps = c(6,8,10))
BicWt BicSets BicReps BicLoad LatWt LatSets LatReps LatLoad PullUpWt PullUpSets PullUpReps PullUpLoad Total_Load
1 3 2 10 60 4 2 6 48 5 2 6 60 168
2 3 2 12 72 4 2 8 64 5 2 8 80 216
3 4 2 12 96 4 2 10 80 5 2 10 100 276
uj5u.com熱心網友回復:
我們可以洗掉列名的后綴部分并拆分為listdata.frames,然后Reduce在這些資料集上進行元素乘法。通過對元素進行元素求和來創建總數list
lst1 <- lapply(split.default(exercise,
sub("[A-Z][a-z] $", "", names(exercise))), \(x) Reduce(`*`, x))
exercise[paste0(names(lst1), "Load")] <- lst1
exercise$Total_Load <- Reduce(` `, lst1)
-輸出
> exercise
BicWt BicSets BicReps LatWt LatSets LatReps BicLoad LatLoad Total_Load
1 3 2 10 4 2 6 60 48 108
2 3 2 12 4 2 8 72 64 136
3 4 2 12 4 2 10 96 80 176
或者tidyverse,通過回圈across“Bic”、“Lat”列分別創建“BicLoad”、“LatLoad”列,reduce通過添加 BicLoad 和 LatLoad 進行元素乘法并創建“Total_load”
library(dplyr)
library(purrr)
exercise %>%
mutate(BicLoad = across(starts_with('Bic')) %>%
reduce(`*`), .after = BicReps) %>%
mutate(LatLoad = across(starts_with('Lat')) %>%
reduce(`*`), .after = LatReps) %>%
mutate(Total_Load = BicLoad LatLoad)
-輸出
BicWt BicSets BicReps BicLoad LatWt LatSets LatReps LatLoad Total_Load
1 3 2 10 60 4 2 6 48 108
2 3 2 12 72 4 2 8 64 136
3 4 2 12 96 4 2 10 80 176
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/512650.html
標籤:r功能
上一篇:將陣列的計算值插入新陣列
