计算从R干预开始的百分比

Mat*_*dan 5 r dplyr

我有一个数据帧,在8周的时间内为一组运动员提供垂直跳跃力.一名运动员只完成了七周.我想计算一个名为"percent.change"的新变量,它计算整个研究期间每周的第一周的百分比差异.我一直在尝试使用dplyr解决这个问题但是我被卡住了.我想知道是否有人有一个简单的解决方案.

数据框称为weeklyPower.每周一次的PowerPower样本如下:

athlt week     power
E      1       25.20015
E      2       25.54569
E      3       24.52463
E      4       24.88044
E      5       25.11421
E      6       25.86154
E      7       26.08613
E      8       25.90775
K      1       29.74277
K      2       28.80131
K      3       28.96818
K      4       29.62439
K      5       29.98119
K      6       29.11570
K      7       29.96380
T      1       25.02413
T      2       23.75867
T      3       25.25716
T      4       24.73285
T      5       27.02891
T      6       25.60140
T      7       25.64665
T      8       24.38937 
Run Code Online (Sandbox Code Playgroud)

非常感谢您的任何想法.

马特

Ste*_*pré 7

使用dplyr你可以做:

df %>% 
  group_by(athlt) %>% 
  arrange(week) %>% 
  mutate(cp = power / first(power) * 100)
Run Code Online (Sandbox Code Playgroud)

这使:

#Source: local data frame [23 x 4]
#Groups: athlt

#   athlt week    power        cp
#1      E    1 25.20015 100.00000
#2      E    2 25.54569 101.37118
#3      E    3 24.52463  97.31938
#4      E    4 24.88044  98.73132
#5      E    5 25.11421  99.65897
#6      E    6 25.86154 102.62455
#7      E    7 26.08613 103.51577
#8      E    8 25.90775 102.80792
#9      K    1 29.74277 100.00000
#10     K    2 28.80131  96.83466
Run Code Online (Sandbox Code Playgroud)

或另一种选择:

df %>% 
  group_by(athlt) %>% 
  mutate(cp = power / power[which.min(week)] * 100)
Run Code Online (Sandbox Code Playgroud)