算出dataset数据年龄

dataset %>% 
  mutate(age_base_yrs = as.numeric(
    baseline_visit - dob)/365.25) %>% 
  relocate(age_base_yrs, .after = baseline_visit)
## # A tibble: 4 × 12
##   studyid dob        baseline_visit age_base_yrs visit_1    visit_2    wt_kg
##   <chr>   <date>     <date>                <dbl> <date>     <date>     <dbl>
## 1 001     1971-04-13 2021-03-01             49.9 2021-09-07 2022-03-19  64.2
## 2 002     1983-07-19 2021-04-01             37.7 2021-10-03 2022-04-13  56.3
## 3 003     1976-09-26 2021-04-13             44.5 2021-10-18 2022-04-22  84.7
## 4 004     1988-02-07 2021-04-19             33.2 2021-11-22 2022-05-01  99.2
## # ℹ 5 more variables: ht_m <dbl>, sex <dbl>, race <dbl>, ethnicity <dbl>,
## #   creat <dbl>

计算bmi

dataset %>%
  mutate(bmi = round(wt_kg/ht_m^2,2)) %>%
      relocate(bmi, .after = ht_m) %>%
  knitr::kable()
studyid dob baseline_visit visit_1 visit_2 wt_kg ht_m bmi sex race ethnicity creat
001 1971-04-13 2021-03-01 2021-09-07 2022-03-19 64.2 1.53 27.43 1 1 0 0.63
002 1983-07-19 2021-04-01 2021-10-03 2022-04-13 56.3 1.47 26.05 2 6 1 1.32
003 1976-09-26 2021-04-13 2021-10-18 2022-04-22 84.7 1.78 26.73 1 4 0 1.05
004 1988-02-07 2021-04-19 2021-11-22 2022-05-01 99.2 1.88 28.07 2 2 0 1.19

##重编程排序后或分类型数据

dataset %>% 
  mutate(sex_cat = case_when(sex == 1 ~ "1_male",
                             sex == 2 ~ "2_female"))
## # A tibble: 4 × 12
##   studyid dob        baseline_visit visit_1    visit_2    wt_kg  ht_m   sex
##   <chr>   <date>     <date>         <date>     <date>     <dbl> <dbl> <dbl>
## 1 001     1971-04-13 2021-03-01     2021-09-07 2022-03-19  64.2  1.53     1
## 2 002     1983-07-19 2021-04-01     2021-10-03 2022-04-13  56.3  1.47     2
## 3 003     1976-09-26 2021-04-13     2021-10-18 2022-04-22  84.7  1.78     1
## 4 004     1988-02-07 2021-04-19     2021-11-22 2022-05-01  99.2  1.88     2
## # ℹ 4 more variables: race <dbl>, ethnicity <dbl>, creat <dbl>, sex_cat <chr>
library(flextable)
## 
## 载入程序包:'flextable'
## The following object is masked from 'package:purrr':
## 
##     compose
dataset %>% 
  mutate(race = case_when(race == 1 ~ "1_white",
                          race == 2 ~ "2_black",
                          race == 3 ~ "3_asian",
                          race == 4 ~ "4_pacific_islander",
                          race == 5 ~ "5_native_american",
                          race == 6 ~ "6_more_than_one_race")) %>% 
  flextable::flextable()

studyid

dob

baseline_visit

visit_1

visit_2

wt_kg

ht_m

sex

race

ethnicity

creat

001

1971-04-13

2021-03-01

2021-09-07

2022-03-19

64.2

1.53

1

1_white

0

0.63

002

1983-07-19

2021-04-01

2021-10-03

2022-04-13

56.3

1.47

2

6_more_than_one_race

1

1.32

003

1976-09-26

2021-04-13

2021-10-18

2022-04-22

84.7

1.78

1

4_pacific_islander

0

1.05

004

1988-02-07

2021-04-19

2021-11-22

2022-05-01

99.2

1.88

2

2_black

0

1.19

计算GFR肾小球滤过率

dataset %>%
  mutate(age = as.numeric((baseline_visit - dob)/365.25)) %>% 
  mutate(gfr = case_when(
    sex == 2 & creat <= 0.7 ~ 142 * (creat/0.7)^-0.241 * 0.9938^age * 1.012,
    sex == 2 & creat > 0.7 ~ 142 * (creat/0.7)^-1.200 * 0.9938^age * 1.012,
    sex == 1 & creat <= 0.9 ~ 142 * (creat/0.7)^-0.302 * 0.9938^age,
    sex == 1 & creat > 0.9 ~ 142 * (creat/0.7)^-1.200 * 0.9938^age
  )) %>% 
  relocate(creat, sex, age, gfr, .after = studyid) 
## # A tibble: 4 × 13
##   studyid creat   sex   age   gfr dob        baseline_visit visit_1   
##   <chr>   <dbl> <dbl> <dbl> <dbl> <date>     <date>         <date>    
## 1 001      0.63     1  49.9 107.  1971-04-13 2021-03-01     2021-09-07
## 2 002      1.32     2  37.7  53.1 1983-07-19 2021-04-01     2021-10-03
## 3 003      1.05     1  44.5  66.2 1976-09-26 2021-04-13     2021-10-18
## 4 004      1.19     2  33.2  61.8 1988-02-07 2021-04-19     2021-11-22
## # ℹ 5 more variables: visit_2 <date>, wt_kg <dbl>, ht_m <dbl>, race <dbl>,
## #   ethnicity <dbl>