从事务对象中删除列标签
Remove column labels from a transaction object
我有一个数据框 df
如下所示:
df <- data.frame(V1 = c("Prod1", "Prod2", "Prod3"),
V2 = c("Prod3", "Prod1", "Prod2"),
V3 = c("Prod2", "Prod1", "Prod3"),
City = c("City1", "City2", "City3"))
当我将其转换为交易 class 时,使用代码:
tData <- as(df, "transactions")
inspect(tData)
我得到如下结果:
items transactionID
[1] {V1=Prod1,V2=Prod3,V3=Prod2,City=City1} 1
[2] {V1=Prod2,V2=Prod1,V3=Prod1,City=City2} 2
[3] {V1=Prod3,V2=Prod2,V3=Prod3,City=City3} 3
这意味着我将 V1=Prod1 和 V2=Prod1 作为单独的产品,但实际上它们是相同的。当我将其用于先验算法时,这给我带来了问题。
如何删除列标签,以便获得交易对象:
items transactionID
[1] {Prod1,Prod3,Prod2,City1} 1
[2] {Prod2,Prod1,Prod1,City2} 2
[3] {Prod3,Prod2,Prod3,City3} 3
请帮忙。
试试这个:
df <- data.frame(V1 = c("Prod1", "Prod2", "Prod3"),
V2 = c("Prod3", "Prod1", "Prod2"),
V3 = c("Prod2", "Prod1", "Prod3"),
City = c("City1", "City2", "City3"))
colnames(df)<-NULL
tData <- as(df, "transactions")
inspect(tData)
您的数据格式有点奇怪(每次交易中的项目数量完全相同)。要正确转换它,您不能使用 data.frame,但您需要一个交易列表。
library("arules")
df <- data.frame(
V1 = c("Prod1", "Prod2", "Prod3"),
V2 = c("Prod3", "Prod1", "Prod2"),
V3 = c("Prod2", "Prod1", "Prod3"),
City = c("City1", "City2", "City3"))
m <- as.matrix(df)
l <- lapply(1:nrow(m), FUN = function(i) (m[i, ]))
这是列表格式,每笔交易都是一个列表元素。
l
[[1]]
V1 V2 V3 City
"Prod1" "Prod3" "Prod2" "City1"
[[2]]
V1 V2 V3 City
"Prod2" "Prod1" "Prod1" "City2"
[[3]]
V1 V2 V3 City
"Prod3" "Prod2" "Prod3" "City3"
现在可以强制转化为翻译
trans <- as(l, "transactions")
inspect(trans)
items
[1] {City1,Prod1,Prod2,Prod3}
[2] {City2,Prod1,Prod2}
[3] {City3,Prod2,Prod3}
您在交易中有一些重复的项目,这些已被删除。
我有一个数据框 df
如下所示:
df <- data.frame(V1 = c("Prod1", "Prod2", "Prod3"),
V2 = c("Prod3", "Prod1", "Prod2"),
V3 = c("Prod2", "Prod1", "Prod3"),
City = c("City1", "City2", "City3"))
当我将其转换为交易 class 时,使用代码:
tData <- as(df, "transactions")
inspect(tData)
我得到如下结果:
items transactionID
[1] {V1=Prod1,V2=Prod3,V3=Prod2,City=City1} 1
[2] {V1=Prod2,V2=Prod1,V3=Prod1,City=City2} 2
[3] {V1=Prod3,V2=Prod2,V3=Prod3,City=City3} 3
这意味着我将 V1=Prod1 和 V2=Prod1 作为单独的产品,但实际上它们是相同的。当我将其用于先验算法时,这给我带来了问题。
如何删除列标签,以便获得交易对象:
items transactionID
[1] {Prod1,Prod3,Prod2,City1} 1
[2] {Prod2,Prod1,Prod1,City2} 2
[3] {Prod3,Prod2,Prod3,City3} 3
请帮忙。
试试这个:
df <- data.frame(V1 = c("Prod1", "Prod2", "Prod3"),
V2 = c("Prod3", "Prod1", "Prod2"),
V3 = c("Prod2", "Prod1", "Prod3"),
City = c("City1", "City2", "City3"))
colnames(df)<-NULL
tData <- as(df, "transactions")
inspect(tData)
您的数据格式有点奇怪(每次交易中的项目数量完全相同)。要正确转换它,您不能使用 data.frame,但您需要一个交易列表。
library("arules")
df <- data.frame(
V1 = c("Prod1", "Prod2", "Prod3"),
V2 = c("Prod3", "Prod1", "Prod2"),
V3 = c("Prod2", "Prod1", "Prod3"),
City = c("City1", "City2", "City3"))
m <- as.matrix(df)
l <- lapply(1:nrow(m), FUN = function(i) (m[i, ]))
这是列表格式,每笔交易都是一个列表元素。
l
[[1]]
V1 V2 V3 City
"Prod1" "Prod3" "Prod2" "City1"
[[2]]
V1 V2 V3 City
"Prod2" "Prod1" "Prod1" "City2"
[[3]]
V1 V2 V3 City
"Prod3" "Prod2" "Prod3" "City3"
现在可以强制转化为翻译
trans <- as(l, "transactions")
inspect(trans)
items
[1] {City1,Prod1,Prod2,Prod3}
[2] {City2,Prod1,Prod2}
[3] {City3,Prod2,Prod3}
您在交易中有一些重复的项目,这些已被删除。