新手到R。
我有1年的患者数据。原始数据集包括患者数据,其中包含50多个变量,例如Pat_id、年龄、种族、实验室检查、HbA 1c日期、值、HbA1c_baseline_date、Hb_m_days_HbA1c_Date_1、Hb_m_days_HbA1c_Date_2、.直至Hb_m_days_HbA1c_Date_15。
样本数据集包括Pat_ID、HbA1c_baseline_date、Hb_m_days_HbA1c_Date_1、Hb_m_days_HbA1c_Date_2、Hb_m_days_HbA1c_Date_3、Hb_m_days_HbA1c_Date_4、Hb_m_days_HbA1c_Date_5。
“PAt_id”-唯一患者ID。
“HbA1c_baseline_date”-是基线HbA 1c日期
“Hb_m_days_HbA1c_Date_”= HbA1c_Baseline日期与相应随访日期之间的差值。
sampledata <- data.frame(
Pat_ID = c(1123, 1134, 1138, 1139),
HbA1c_Baseline_Date = c("10/2/2019", "8/28/2019", "10/16/2019", "9/30/2019"),
Hb_m_days_HbA1c_Date_1 = c(-421, -261, 0, 0),
Hb_m_days_HbA1c_Date_2 = c(-329, -168, NA, 95),
Hb_m_days_HbA1c_Date_3 = c(-196, -142, NA, 245),
Hb_m_days_HbA1c_Date_4 = c(-105, -141, NA, NA),
Hb_m_days_HbA1c_Date_5 = c(0, 0, NA, NA),
Hb_m_days_HbA1c_Date_6 = c(97, 89, NA, NA),
)
我希望R创建一个新的变量,如“baseline”、“followup_1”、“followup_2”、“followup_3”、“followup_4”、“followup_5”等,直到原始数据集中的“followup_12”。
我想用R扫描所有“Hb_m_days_HbA1c_date_“s列,删除负值,找出“0”并将其保留在“基线”列中,之后的任何数字都应在下一个相应列“followup_1”、“followup_2”等中。
我试着使用图书馆(tidyverse),但它没有多大帮助。str(dataraw)的输出:
data.frame': 852 obs. of 167 variables:
$ Pat_id : int 10004 10010 10012 10013 10014 10015 10019 10021 10025 10030 ...
$ practice_id : int 11 11 13 11 12 14 8 8 14 12 ...
$ rph_id : int 7 7 1 7 10 1 2 2 1 10 ...
$ index_date : chr "2019-10-02" "2019-08-28" "2019-07-19" "2019-07-10" ...
$ study_group : int 1 1 1 1 1 1 1 1 1 1 ...
$ age : int 67 56 39 34 31 72 48 57 59 46 ...
$ gender : int 1 1 1 0 0 0 1 1 1 0 ...
$ race : int 3 1 1 2 2 1 2 1 2 2 ...
$ medicare : int 1 0 0 0 0 1 0 0 0 0 ...
$ commercial : int 0 0 0 0 0 0 0 0 1 0 ...
$ hypertension : int 1 1 0 0 0 0 0 1 1 1 ...
$ diabetes : int 1 1 1 1 1 1 1 1 1 1 ...
$ cc_total : int 1 1 3 1 2 2 1 1 1 1 ...
$ num_meds : int 11 16 8 4 7 5 8 14 8 16 ...
$ sbp_baseline_value : int 144 120 114 125 137 138 140 126 144 151 ...
$ dbp_baseline_value : int 60 76 72 84 78 82 98 84 70 96 ...
$ hba1c_baseline_value : num 9.2 11.2 11.1 10.4 11.3 10.3 12.8 10 13.1 9.6 ...
$ awv_inclusion : int NA NA NA NA NA NA NA NA NA NA ...
$ diabetes_inclusion_9 : int NA NA NA NA NA NA NA NA NA NA ...
$ diabetes_inclusion_7 : int NA NA NA NA NA NA NA NA NA NA ...
$ bp_inclusion : int NA NA NA NA NA NA NA NA NA NA ...
$ dm_match_7 : int 1 1 1 1 1 1 1 1 1 1 ...
$ dm_match_9 : int 1 1 1 1 1 1 1 1 1 1 ...
$ awv_2019 : int 1 1 1 1 1 1 1 1 1 1 ...
$ dsm_dc_2019 : int 1 1 1 1 1 1 1 1 1 1 ...
$ dsm_htn_2019 : int 0 0 0 0 0 0 0 0 0 1 ...
$ diabetes_subset7 : int 1 1 1 1 1 1 1 1 1 1 ...
$ diabetes_subset9 : int 1 1 1 1 1 1 1 1 1 1 ...
$ WHITE : int 0 1 1 0 0 1 0 1 0 0 ...
$ BLACK : int 0 0 0 1 1 0 1 0 1 1 ...
$ OTHER : int 1 0 0 0 0 0 0 0 0 0 ...
$ DIABETES_SUPER7 : int 1 1 1 1 1 1 1 1 1 1 ...
$ DIABETES_SUPER9 : int 1 1 1 1 1 1 1 1 1 1 ...
$ hba1c_date : chr "2019-10-02" "2019-08-28" "2019-10-16" "2019-09-30" ...
$ hba1c_final_2019_date : chr "2019-10-02" "2019-08-28" "2019-10-16" "2019-09-30" ...
$ Max..hba1c_relative_index_date.: int 0 0 89 82 149 -13 -15 -22 206 224 ...
$ hba1c_endyear_value : num 9.2 11.2 9.2 10.7 6.7 10.3 12.8 10 6.4 6.3 ...
$ a1c_control_7_2019 : int 0 0 0 0 1 0 0 0 1 1 ...
$ a1c_control_8_2019 : int 0 0 0 0 1 0 0 0 1 1 ...
$ a1c_control_9_2019 : int 0 0 0 0 1 0 0 0 1 1 ...
$ HbA1c.Poor.Control_2019 : int 1 1 1 1 0 1 1 1 0 0 ...
$ bp_date : chr "2019-10-02" "2019-11-06" "2019-12-27" "2019-09-30" ...
$ bp_final_2019_date : chr "2019-10-02" "2019-11-06" "2019-12-27" "2019-09-30" ...
$ Max..bp_relative_index_date. : int 0 70 161 82 261 -18 -15 0 310 223 ...
$ bp_relative_index_date : int 0 70 161 82 261 -18 -15 0 310 223 ...
$ sbp_endyear_value : int 144 133 128 139 135 138 140 126 127 148 ...
$ dbp_endyear_value : int 60 86 88 71 89 82 98 84 68 87 ...
$ sbp_control_2019 : int 0 1 1 1 1 1 0 1 1 0 ...
$ dbp_control_2019 : int 1 1 1 1 1 1 0 1 1 1 ...
$ bp_control_2019 : int 0 1 1 1 1 1 0 1 1 0 ...
$ acr_baseline_date : chr "2019-03-21" "2019-08-29" "2019-07-20" "2019-06-28" ...
$ acr : num 39.5 6.5 6.9 3.8 NA 9.5 6.9 NA 17.7 6.9 ...
$ eGFR_baseline_date : chr "2019-10-03" "2019-08-29" "2019-07-23" "2019-06-28" ...
$ eGFR : int 92 98 40 124 60 86 52 79 86 65 ...
$ HDL_baseline_date : chr "2019-03-21" "2019-08-29" "2019-02-28" "2019-06-28" ...
$ HDL : int 41 37 44 55 36 54 42 NA 42 23 ...
$ LDL_baseline_date : chr "2019-03-21" "2019-08-29" "2019-02-28" "2019-06-28" ...
$ LDL : num 81 70 90 56 93 59 64 NA 91 NA ...
$ TG_baseline_date : chr "2019-03-21" "2019-08-29" "2019-02-28" "2019-06-28" ...
$ TG : int 215 115 205 86 180 88 70 NA 172 589 ...
$ TC_baseline_date : chr "2019-03-21" "2019-08-29" "2019-02-28" "2019-06-28" ...
$ TC : int 165 130 175 128 165 131 120 NA 167 147 ...
$ Non.HDL : int 124 93 131 73 129 77 78 NA 125 124 ...
$ VLDL_baseline_date : chr "2019-03-21" "2019-08-29" "2019-02-28" "2019-06-28" ...
$ VLDL : num 43 23 41 17 36 18 14 NA 34 NA ...
$ height_in_baseline : num 62 64.5 62 NA 72 NA NA 60 68 72 ...
$ weight_lbs_baseline : num 280 192 237 NA NA ...
$ index_date_month : int 10 8 7 7 4 10 12 10 2 5 ...
$ index_date_quarter : int 4 3 3 3 2 4 4 4 1 2 ...
$ smoking_status : int 2 3 2 3 2 3 3 2 2 1 ...
$ elix_obesity : int 1 0 1 0 1 0 0 0 0 1 ...
$ elix_depression : int 1 0 0 0 0 0 0 0 0 0 ...
$ icd_10_chart : int 10 4 12 1 4 1 1 3 5 8 ...
$ X_PS_ : num 0.3575 0.3941 0.0882 0.2653 0.2291 ...
$ X_Lps_2 : num -0.586 -0.43 -2.336 -1.019 -1.213 ...
$ X_MATCHWGT_ : num 1 1 1 1 1 1 1 1 1 1 ...
$ X_MatchID_2 : int 189 217 1 105 61 16 227 158 248 255 ...
$ days_1 : int -421 0 -261 -13 -14 -467 -431 -380 -146 0 ...
$ HbA1c_Date_1 : chr "2018-08-07" "2019-08-28" "2018-10-31" "2019-06-27" ...
$ HbA1c_1 : num 7.9 11.2 7 10.4 11.3 8.8 6.4 8 8.2 9.6 ...
$ days_2 : int -329 NA -168 82 149 -13 -257 -22 -1 93 ...
$ HbA1c_Date_2 : chr "2018-11-07" NA "2019-02-01" "2019-09-30" ...
$ HbA1c_2 : num 8.8 NA 7.7 10.7 6.7 10.3 6.8 10 13.1 5.9 ...
$ days_3 : int -196 NA -142 232 NA NA -96 169 92 94 ...
$ HbA1c_Date_3 : chr "2019-03-20" NA "2019-02-27" "2020-02-27" ...
$ HbA1c_3 : num 9.1 NA 8.1 11 NA NA 7.1 8.1 7.6 6 ...
$ days_4 : int -105 NA -141 NA NA NA -15 NA 206 224 ...
$ HbA1c_Date_4 : chr "2019-06-19" NA "2019-02-28" NA ...
$ HbA1c_4 : num 9.1 NA 8.2 NA NA NA 12.8 NA 6.4 6.3 ...
$ days_5 : int 0 NA 0 NA NA NA 190 NA NA NA ...
$ HbA1c_Date_5 : chr "2019-10-02" NA "2019-07-19" NA ...
$ HbA1c_5 : num 9.2 NA 11.1 NA NA NA 9 NA NA NA ...
$ days_6 : int 97 NA 89 NA NA NA NA NA NA NA ...
$ HbA1c_Date_6 : chr "2020-01-07" NA "2019-10-16" NA ...
$ HbA1c_6 : num 9.1 NA 9.2 NA NA NA NA NA NA NA ...
$ days_7 : int NA NA 168 NA NA NA NA NA NA NA ...
$ HbA1c_Date_7 : chr NA NA "2020-01-03" NA ...
$ HbA1c_7 : num NA NA 10.1 NA NA NA NA NA NA NA ...
$ days_8 : int NA NA NA NA NA NA NA NA NA NA ... The list output is truncated.
输出数据集应该如下所示-
| Pat_id|基线|followup_1|后续_2| followup_3|后续_4|后续_5|后续_6|后续_7|
| --|--|--|--|--|--|--|--|--|
| 1123 | 0 | 97 |||||||
| 1134 | 0 | 89 | 168 ||||||
| 1138 | 0 ||||||||
| 1139 | 0 | 95 | 245 ||||||
1条答案
按热度按时间pexxcrt21#
使用tidyverse函数的一个潜在选项:
创建于2023-10-09带有reprex v2.0.2