拆下支架和支架;apriori算法输出的符号&;与R中的另一个数据帧连接
我对R比较陌生&被困在这里。搜索了论坛和文档,但没有找到答案 我有一个场景,apriori算法的规则输出必须与lhs和rhs值上的另一个数据帧连接。我能够创建规则输出的dataframe,但如果lhs中有多个项目集,我无法删除大括号&=>符号和除法。完成后,我必须在lhs&rhs值上加入一个dataframe,以从其他dataframe中检索更多的列 下面是我根据apriori的规则输出创建的数据帧拆下支架和支架;apriori算法输出的符号&;与R中的另一个数据帧连接,r,R,我对R比较陌生&被困在这里。搜索了论坛和文档,但没有找到答案 我有一个场景,apriori算法的规则输出必须与lhs和rhs值上的另一个数据帧连接。我能够创建规则输出的dataframe,但如果lhs中有多个项目集,我无法删除大括号&=>符号和除法。完成后,我必须在lhs&rhs值上加入一个dataframe,以从其他dataframe中检索更多的列 下面是我根据apriori的规则输出创建的数据帧 > RulesDf
> RulesDf
rules support confidence lift
1 {0400000000002} => {0400000000001} 0.2 1 2.500000
2 {0400000000005} => {0400000000004} 0.2 1 1.666667
3 {0400000000007} => {0400000000008} 0.2 1 3.333333
4 {0400000000003} => {0400000000004} 0.3 1 1.666667
5 {0400000000001,0400000000003} => {0400000000004} 0.2 1 1.666667
需要在lhs和rhs上连接的其他数据帧
> store1inv
store UPC Inventory
1 1 0400000000001 100
2 1 0400000000002 10
3 1 0400000000003 1002
4 1 0400000000004 50
5 1 0400000000005 15
6 1 0400000000006 25
7 1 0400000000007 150
8 1 0400000000008 350
9 1 0400000000009 100
10 1 0400000000010 75
基本上,我想找出以04开头的rulesDf中所有项目的库存。非常感谢您的帮助。这里有一种可能性,这是您的规则SDF的副本/可复制格式
RulesDf <- structure(list(rules = c("{0400000000002} => {0400000000001}",
"{0400000000005} => {0400000000004}", "{0400000000007} => {0400000000008}",
"{0400000000003} => {0400000000004}",
"{0400000000001,0400000000003} => {0400000000004}"
), support = c(0.2, 0.2, 0.2, 0.3, 0.2), confidence = c(1L, 1L,
1L, 1L, 1L), lift = c(2.5, 1.666667, 3.333333, 1.666667, 1.666667)),
.Names = c("rules", "support", "confidence", "lift"),
class = "data.frame", row.names = c(NA, -5L))
然后,您可以使用左列和右列连接到其他表。在
RulesDf
的第一列中保存了什么?例如,040000000001
、040000000003
和040000000004
都应该保留吗?如果是这样,它们将如何与第二个数据帧连接,因为在同一单元格中有多个匹配项。如果有多个项目,你会说“分割”。这是什么意思?我认为您最好的选择是显示“分割”的含义,然后显示您希望合并的输出是什么样子。
rules <- regcapturedmatches(RulesDf$rules,
gregexpr("{([^}]*)}", RulesDf$rules, perl=T))
mrules <- lapply(rules, function(x)
cbind(left=strsplit(x[1],",")[[1]], right=x[2]))
rules<-regmatches(RulesDf$rules, gregexpr("{([^}]*)}",
RulesDf$rules, perl=T))
rules<-lapply(rules, function(x) gsub("[{}]","",x))
mrules <- lapply(rules, function(x)
cbind(left=strsplit(x[1],",")[[1]], right=x[2]))
ExpRules <- cbind(RulesDf[rep(1:nrow(RulesDf), sapply(mrules, nrow)),],
do.call(rbind, mrules))
support confidence lift left right
1 0.2 1 2.500000 0400000000002 0400000000001
2 0.2 1 1.666667 0400000000005 0400000000004
3 0.2 1 3.333333 0400000000007 0400000000008
4 0.3 1 1.666667 0400000000003 0400000000004
5 0.2 1 1.666667 0400000000001 0400000000004
5.1 0.2 1 1.666667 0400000000003 0400000000004