Learn R Programming

arules (version 1.6-3)

transactions-class: Class transactions --- Binary Incidence Matrix for Transactions

Description

The transactions class represents transaction data used for mining itemsets or rules. It is a direct extension of class '>itemMatrix to store a binary incidence matrix, item labels, and optionally transaction IDs and user IDs.

Arguments

Objects from the Class

Objects are created by coercion from objects of other classes (see Examples section) or by calls of the form new("transactions", ...).

Slots

itemsetInfo:

a data.frame with one row per transaction (each transaction is considered an itemset). The data.frame can hold columns with additional information, e.g., transaction IDs or user IDs for each transaction. Note: this slot is inherited from class '>itemMatrix, but should be accessed in transactions with the method transactionInfo().

data:

object of class ngCMatrix to store the binary incidence matrix (see '>itemMatrix class)

itemInfo:

a data.frame to store item labels (see '>itemMatrix class)

Extends

Class '>itemMatrix, directly.

Methods

% \item{[}{\code{signature(x = "transactions")}; % extracts a subset from the incidence matrix. The first argument % extracts transactions and the second argument can be used to % extract a subset of items (using item IDs)}
coerce

signature(from = "matrix", to = "transactions"); produces a transactions data set from a binary incidence matrix. The column names are used as item labels and the row names are stores as transaction IDs.

coerce

signature(from = "transactions", to = "matrix"); coerces the transactions data set into a binary incidence matrix.

coerce

signature(from = "list", to = "transactions"); produces a transactions data set from a list. The names of the items in the list are used as item labels.

coerce

signature(from = "transactions", to = "list"); coerces the transactions data set into a list of transactions. Each transaction is a vector of character strings (names of the contained items).

coerce

signature(from = "data.frame", to = "transactions"); recodes the data frame containing only categorical variables (factors) or logicals all into a binary transaction data set. For binary variables only TRUE values are converted into items and the item label is the variable name. For factors, a dummy item for each level is automatically generated. Item labels are generated by concatenating variable names and levels with "=". The original variable names and levels are stored in the itemInfo data frame as the components variables and levels. Note that NAs are ignored (i.e., do not generate an item).

coerce

signature(from = "transactions", to = "data.frame"); represents the set of transactions in a printable form as a data.frame. Note that this does not reverse coercion from data.frame to transactions.

coerce

signature(from = "ngCMatrix", to = "transactions"); Note that the data is stored transposed in the ngCMatrix. Items are stored as rows and transactions are columns!

dimnames, rownames, colnames

signature(x = "transactions"); returns row (transactionID) and column (item) names.

items

signature(x = "transactions"); returns the items in the transactions as an '>itemMatrix.

labels

signature(x = "transactions"); returns the labels for the itemsets in each transaction (see itemMatrix).

transactionInfo<-

signature(x = "transactions"); replaces the transaction information with a new data.frame.

transactionInfo

signature(x = "transactions"); returns the transaction information as a data.frame.

show

signature(object = "transactions")

summary

signature(object = "transactions")

Details

Transactions can be created by coercion from lists containing transactions, but also from matrix and data.frames. However, you will need to prepare your data first (see coercion methods in the Methods Section and the Example Section below for details on the needed format). Association rule mining can only use items and does not work with continuous variables.

For example, an item describing a person (i.e., the considered object called a transaction) could be tall. The fact that the person is tall would be encoded in the transaction containing the item tall. This is typically encoded in a transaction-by-items matrix by a TRUE value. This is why as.transaction can deal with logical columns, because it assumes the column stands for an item. The function also can convert columns with nominal values (i.e., factors) into a series of binary items (one for each level). So if you have nominal variables then you need to make sure they are factors (and not characters or numbers) using something like

data[,"a_nominal_var"] <- factor(data[,"a_nominal_var"]).

Continuous variables need to be discretized first. An item resulting from discretization might be age>18 and the column contains only TRUE or FALSE. Alternatively it can be a factor with levels age<=18, 50=>age>18 and age>50. These will be automatically converted into 3 items, one for each level. Have a look at the function discretize for automatic discretization.

Complete examples for how to prepare data can be found in the man pages for Income and Adult.

Transactions are represented as sparse binary matrices of class itemMatrix. If you work with several transaction sets at the same time, then the encoding (order of the items in the binary matrix) in the different sets is important. See itemCoding to learn how to encode and recode transaction sets.

See Also

[-methods, discretize, LIST, write, c, image, inspect, itemCoding, read.transactions, random.transactions, sets, itemMatrix-class

Examples

Run this code
# NOT RUN {
## example 1: creating transactions form a list
a_list <- list(
      c("a","b","c"),
      c("a","b"),
      c("a","b","d"),
      c("c","e"),
      c("a","b","d","e")
      )

## set transaction names
names(a_list) <- paste("Tr",c(1:5), sep = "")
a_list

## coerce into transactions
trans1 <- as(a_list, "transactions")

## analyze transactions
summary(trans1)
image(trans1)

## example 2: creating transactions from a matrix
a_matrix <- matrix(c(
  1,1,1,0,0,
	1,1,0,0,0,
	1,1,0,1,0,
	0,0,1,0,1,
	1,1,0,1,1
  ), ncol = 5)

## set dim names
dimnames(a_matrix) <- list(c("a","b","c","d","e"),
	paste("Tr",c(1:5), sep = ""))

a_matrix

## coerce
trans2 <- as(a_matrix, "transactions")
trans2
inspect(trans2)

## example 3: creating transactions from data.frame
a_df <- data.frame(
	age   = as.factor(c(6, 8, NA, 9, 16)), 
	grade = as.factor(c("A", "C", "F", NA, "C")),
  pass  = c(TRUE, TRUE, FALSE, TRUE, TRUE))  
## note: factors are translated differently to logicals and NAs are ignored
a_df

## coerce
trans3 <- as(a_df, "transactions") 
inspect(trans3)
as(trans3, "data.frame")

## example 4: creating transactions from a data.frame with 
## transaction IDs and items (by converting it into a list of transactions first) 
a_df3 <- data.frame(
  TID = c(1,1,2,2,2,3), 
  item=c("a","b","a","b","c", "b")
  )
a_df3
trans4 <- as(split(a_df3[,"item"], a_df3[,"TID"]), "transactions")
trans4
inspect(trans4)

## Note: This is very slow for large datasets. It is much faster to 
## read transactions using read.transactions() with format = "single".
## This can be done using an anonymous file.
write.table(a_df3, file = tmp <- file(), row.names = FALSE)
trans4 <- read.transactions(tmp, format = "single",
  header = TRUE, cols = c("TID", "item"))
close(tmp)
inspect(trans4)

## example 5: create transactions from a dataset with numeric variables
## using discretization.
data(iris)

irisDisc <- discretizeDF(iris)
head(irisDisc)
trans5 <- as(irisDisc, "transactions")
trans5
inspect(head(trans5))

# }

Run the code above in your browser using DataLab