【发布时间】:2020-08-01 11:15:38
【问题描述】:
我有一个包含大约 200 万个样本的数据集。有 30 列用于编码的诊断,每列标记为 I10_DX1 到 I10_DX30。我需要从这些现有列中创建一个新变量。
比如data=CHD_2016,我想生成的新变量是=tetralogy。如果 I10_DX1 到 I10_DX30 列中的任何代码具有 Q0[01234567],它将被编码为 1,否则为 0。我可以使用下面的代码使其工作。但是,我认为必须有一种更短更好的方法来做到这一点。在 stata 中,我可以使用循环在几行中做到这一点。有人能推荐一个更好的方法吗!
CHD_2016$tetralogy<- ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX1), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX2), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX3), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX4), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX5), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX6), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX7), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX8), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX9), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX10), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX11), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX12), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX13), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX14), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX15), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX16), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX17), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX18), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX19), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX20), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX21), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX22), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX23), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX24), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX25), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX26), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX27), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX28), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX29), 1, 0)|
ifelse(grepl("Q0[01234567]", CHD_2016$I10_DX30), 1, 0) ```
【问题讨论】:
-
你能提供一些使用
dput(head(df))的示例数据吗? -
嗨-这是这样的数据:I10_DX1 = structure(c(4970L, 8006L, 16246L, 16247L, 16246L, 7696L), .Label = c("", "A000", "A0100" 、“A0109”、“A011”、“A020”、“A021”、“A0220”、“A0221”、“A0223”、“A0224”、“A0225”、“A0229”、“A028”、“A029”、“ A030”、“A031”、“A033”、“A038”、“A039”、“A040”、“A041”、“A042”、“A043”、“A044”、“A045”、“A046”、“A047” ,“A048”,“A049”,“A050”,“A051”,“A058”,“A059”,“A060”,
-
括号没有关闭。您可以在问题中发布数据示例吗?