【发布时间】:2016-01-25 12:38:11
【问题描述】:
我正在使用 R 处理一些顺序数据。具体来说,我有一个在各种序列中多次出现的整数列表。我想做的是创建一些代码来识别出现了多少不同的序列。
目前,我正在手动操作。我预定义了存在的模式并应用了一个计算出现次数的函数。
我首先使用 RMYSQL 进行查询,该查询存储在变量 product_process_history_joined 中。然后,我创建了一个我感兴趣的数据列表,该列表存储在变量数据中。然后,我定义我的函数应该使用哪些模式,最后我应用我的函数来计算出现次数。
代码:
product_process_history_joined<-dbGetQuery(con,"SELECT *
FROM product, process_history
WHERE product.idproduct = process_history.product_idproduct")
data<-product_process_history_joined$process_types_idprocess_types
pat <- c(1,2,4,5,6)
x <- sapply(1:(length(data)-length(pat)), function(x) all(data[x: (x+length(pat)-1)] == pat))
route<-data[which(x)]
countR<-length(route)
pat1 <- c(1,2,4,5,7,9,7,7,2,5,6,10)
x <- sapply(1:(length(data)-length(pat1)), function(x) all(data[x: (x+length(pat1)-1)] == pat1))
route1<-data[which(x)]
countR1<-length(route1)
生成并存储在数据变量中的数据集如下所示:
[1] 1 4 5 6 1 4 5 6 1 4 5 6 1 4 5 6 1 4 5 6 1 4 5 6 1 4 5 6 1 4 5 6 1 4 5
[36] 6 1 4 5 6 1 4 5 6 1 4 5 6 1 4 5 6 1 4 5 6 1 4 5 6 1 4 5 6 1 4 5 6 1 4
[71] 5 6 1 4 5 6 1 4 5 6 1 4 5 6 1 2 4 5 6 10 1 2 4 5 7 9 7 7 2 5 6 10 1 2 4
[106] 5 6 10 1 2 4 5 6 10 1 2 4 8 1 2 3 5 7 8 1 2 3 5 6 1 2 3 5 6 1 2 4 5 6 10
这只是列表的一个子集。我使用了大约 12 种不同的模式。给定数据集中前 2 个模式的结果是 pat 为 21,pat1 为 1。
【问题讨论】:
-
请创建一个最小且可重现的示例:stackoverflow.com/a/5963610/1412059 您的数据库查询与手头的问题无关。