Set up Kale data
kale = data.frame(patient =paste0("patient",1:20),
baseline=rnorm(20),
time1 = rnorm(20),
time2 = rnorm(20),
time3 = rnorm(20))
head(kale,3)
## patient baseline time1 time2 time3
## 1 patient1 -0.1053750 -1.1182440 -1.2896359 0.80818794
## 2 patient2 1.4671459 -0.6017518 -0.7623993 -1.55632731
## 3 patient3 0.3474804 -0.7315043 1.2228622 -0.03752189
Creating new columns
Using standard R
kale2 = kale[,2:5] - kale[,2]
colnames(kale2) = paste0(colnames(kale)[2:5],'_rel')
kaleStandard = cbind(kale,kale2)
head(kaleStandard,3)
## patient baseline time1 time2 time3 baseline_rel
## 1 patient1 -0.1053750 -1.1182440 -1.2896359 0.80818794 0
## 2 patient2 1.4671459 -0.6017518 -0.7623993 -1.55632731 0
## 3 patient3 0.3474804 -0.7315043 1.2228622 -0.03752189 0
## time1_rel time2_rel time3_rel
## 1 -1.012869 -1.1842610 0.9135629
## 2 -2.068898 -2.2295451 -3.0234732
## 3 -1.078985 0.8753818 -0.3850023
Using dplyr
library(dplyr)
##
## Attaching package: 'dplyr'
##
## The following object is masked from 'package:stats':
##
## filter
##
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
kaleDplyr = mutate(kale,
baseline_rel = baseline-baseline,
time1_rel = time1 - baseline,
time2_rel = time2 - baseline,
time3_rel = time3 - baseline)
head(kaleDplyr,3)
## patient baseline time1 time2 time3 baseline_rel
## 1 patient1 -0.1053750 -1.1182440 -1.2896359 0.80818794 0
## 2 patient2 1.4671459 -0.6017518 -0.7623993 -1.55632731 0
## 3 patient3 0.3474804 -0.7315043 1.2228622 -0.03752189 0
## time1_rel time2_rel time3_rel
## 1 -1.012869 -1.1842610 0.9135629
## 2 -2.068898 -2.2295451 -3.0234732
## 3 -1.078985 0.8753818 -0.3850023
check for equality
all.equal(kaleStandard,kaleDplyr)
## [1] TRUE