簡體   English   中英

基於 R 中的模式列表的模糊匹配

[英]fuzzy match based on a list of patterns in R

我需要根據模式列表生成一個虛擬變量。

df <- data.frame(
  med = c("sivastatin", "sisvatatin", "rusvastatin", "yes", "no", "don't remember", "true", "false", "omega 3", "atorvastatin", "no")
)

我需要創建第二個虛擬變量來指示患者是否使用了任何葯物。 我試過這個:

yes <- c("yes", "vastatin", "true", "don't remember")

nao <- c("no", "false") 

df$med_cat <- ifelse(agrepl(yes, df$med, ignore.case = TRUE), 1, 
                  ifelse(agrepl(no, df$med, ignore.case = TRUE), 0, NA)) 

但是我收到一個錯誤,說只使用了第一個元素

參數“模式”長度 > 1,並且只有第一個元素將使用$<-.data.frame中的錯誤( *tmp* ,med_cat,值 = 邏輯(0)):替換有 0 行,數據有 8381

有人可以幫我弄這個嗎?

解決方案:

df$med_cat <- ifelse(apply(sapply(yes, agrepl, df$med_cholstand, .1), 1, any), 1,
                             ifelse(apply(sapply(no, agrepl, df$med_cholstand, .1), 1, any), 0, NA))

謝謝大家的幫助!

這是問題的解決方案:


df$med_cat <- ifelse(apply(sapply(yes, agrepl, df$med_cholstand, .1), 1, any), 1,
                             ifelse(apply(sapply(no, agrepl, df$med_cholstand, .1), 1, any), 0, NA))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM