如果患者有1到5次测量,我很难理解如何减去血压数据。例如,我的数据
ID | 日期1 | 日期2 | >值2日期3值3>日期4 | <1th>值4>日期5<2th>值5|||
---|---|---|---|---|---|---|
1 | 2022年1月1日 | 160 | <2022年2月1日>161 | 159 | 2022年5月1日||
2022年2月8日 | 130 | 2020年7月1日 | 120 | NA | NA||
3 | 2022年4月1日 | 112 | <2022年9月29日>161 | <159>NA|||
4 | 2022年10月1日 | 182 | NA | NA |
假设第一个值始终位于Value1中,并且日期排序正确,则dplyr
包会使其直接前进。
使用coalesce
查找第一个非缺失值2-5(按相反顺序(,并从中减去值1。
library(dplyr)
mutate(df, NewVariable = coalesce(Value5, Value4, Value3, Value2) - Value1)
#> # A tibble: 4 × 12
#> ID Date1 Value1 Date2 Value2 Date3 Value3 Date4 Value4 Date5 Value5 NewVariable
#> <dbl> <chr> <dbl> <chr> <dbl> <chr> <dbl> <chr> <dbl> <chr> <dbl> <dbl>
#> 1 1 01/01/2022 160 01/02/2022 161 01/04/2022 159 01/05/2022 159 01/06/2022 130 -30
#> 2 2 08/02/2022 130 01/07/2022 120 <NA> NA <NA> NA <NA> NA -10
#> 3 3 01/04/2022 112 29/09/2022 161 10/10/2022 159 <NA> NA <NA> NA 47
#> 4 4 01/10/2022 182 <NA> NA <NA> NA <NA> NA <NA> NA NA