在 R 中具有特定结果(RHS)的矿井序列规则

Mine sequence rules with specific consequent (RHS) in R

有一个样本数据集,其中包含有关糖尿病患者的信息。我想找到序列规则(使用 arulesSequences 库),它在 rhs 中只有一个元素 - "id_58"。我在下面发布了下载数据集 (565 KB) 和我的一些规则的代码。你能告诉我我应该怎么做才能达到我预定的目标吗?

library(arulesSequences)
download.file('http://staff.ii.pw.edu.pl/~gprotazi/dydaktyka/dane/diab_trans.data','diab_trans.data')

# some operations which result in transaction form of data
diab.df <- read.csv("diab_trans.data", header=TRUE, stringsAsFactors = FALSE)
write.table(diab.df, "diab_trans2.data", sep = "," , row.names = FALSE, col.names = FALSE )
diabSeq <- read_baskets(con = "diab_trans2.data", sep =",", info = c("sequenceID","eventID"))

# setting parameter, mining frequent sequential patterns and rules
seqParam = new ("SPparameter",support = 0.6, maxsize = 4, mingap=600, maxgap =150000, maxlen = 3)
patSeq= cspade(diabSeq,seqParam, control = list(verbose = TRUE, tidLists = FALSE, summary= TRUE))
seqRules = ruleInduction(patSeq,confidence = 0.8)
# inspect(seqRules)

# ideas which do not work
# finalSeq <- subset(seqRules, subset = (rhs %in% "id_58"))
# finalSeq <- subset(seqRules, rhs(seqRules) %in% c('id_58'))

您的商品标签包含双引号:

> itemLabels(rhs(seqRules))
 [1] "\"id_33\"" "\"id_60\"" "\"id_62\"" "2"         "\"id_64\"" "\"id_34\""
 [7] "0"         "3"         "4"         "5"         "6"         "7"        
[13] "72"        "8"         "9"         "\"id_57\"" "\"id_58\""

因此您需要清理它们或使用:

finalSeq <- subset(seqRules, rhs(x) %ain% "\"id_58\"")