それらを貼り付ける:非公開にデータフレーム列とIは、データフレームを持って一緒に
df <- structure(list(ID = 1:19, MEDICATION = c("0", "NOVOMIX 26 BF, 20 D",
"NOVOMIX 14 D", "NOVOMIX 34 BF 22 D", "MIXTARD 52 BF 20 D", "MIXTARD 40 BF 24 D",
"MIXTARD 10 BF 8 D", "MIXTARD 42 BF 24 D", "MIXTARD 20 BF 18 D",
"MIXTARD 82 BF 46 D", "MIXTARD 14 BF 10 D", "NOVOMIX 15 BF 15 D",
"MIXTARD", NA, "MIXTARD 10 BF 4 D", "NOVOMIX", "MIXTARD --> NOVOMIX",
"NOT GIVEN ANY DIABETES MEDICATION INPATIENT PATIENT NORMALLY ON METFORMIN",
"GIVEN ASPART")), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -19L), .Names = c("ID", "MEDICATION"))
Iは、(すべての薬物を抽出したいすなわちNOVOMIX
、MIXTARD
、データフレーム内のMEDICATION
変数からMETFORMIN
、ASPART
。次のようにし、それらを貼り付け、私は私のコードを書いた:
library(tidyverse)
library(rebus)
df %>%
mutate(MEDICATION2 = str_extract_all(MEDICATION, pattern =
or1(c("NOVOMIX", "MIXTARD", "METFORMIN", "ASPART")))) %>%
unnest(MEDICATION2) %>%
group_by(ID) %>%
mutate(MEDICATION2 = str_c(unlist(MEDICATION2), collapse = " - ")) %>%
slice(1)
私の予想される出力は次のようになります。
df_out <- structure(list(ID = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19), MEDICATION = c("0", "NOVOMIX 26 BF, 20 D",
"NOVOMIX 14 D", "NOVOMIX 34 BF 22 D", "MIXTARD 52 BF 20 D", "MIXTARD 40 BF 24 D",
"MIXTARD 10 BF 8 D", "MIXTARD 42 BF 24 D", "MIXTARD 20 BF 18 D",
"MIXTARD 82 BF 46 D", "MIXTARD 14 BF 10 D", "NOVOMIX 15 BF 15 D",
"MIXTARD", NA, "MIXTARD 10 BF 4 D", "NOVOMIX", "MIXTARD --> NOVOMIX",
"NOT GIVEN ANY DIABETES MEDICATION INPATIENT PATIENT NORMALLY ON METFORMIN",
"GIVEN ASPART"), MEDICATION2 = c(NA, "NOVOMIX", "NOVOMIX", "NOVOMIX",
"MIXTARD", "MIXTARD", "MIXTARD", "MIXTARD", "MIXTARD", "MIXTARD",
"MIXTARD", "NOVOMIX", "MIXTARD", NA, "MIXTARD", "NOVOMIX", "MIXTARD - NOVOMIX",
"METFORMIN", "ASPART")), .Names = c("ID", "MEDICATION", "MEDICATION2"
), row.names = c(NA, -19L), class = "data.frame")
問題は、コードがMEDICATION == 0
を持つ行を削除し、私は私のコードは、単純な文字列の抽出には長すぎると思います。私はあなたがこのコードは(可能であれば)短縮することができます方法を知っていれば助けを求めるしたいと思います。
あなただけの 'sapply(C( "NOVOMIX"、 "MIXTARD"、 "メトホルミン"、 "アスパルト")のような何かを行うことができ、 grepl、X = DFの$薬) '4つのバイナリ列、各薬剤のための1を取得します。 – thelatemail
@thelatemail私は、私が薬を抽出する間、私が保存したいと思っている他のカラムがあり、私はその薬のために1つの変数しか持たないことを望んでいます。 – HNSKD