Skip to content
Back to skills

Arules

ASecurity

R arules package for association rules. Use for mining frequent itemsets and association rules.

  • 5 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added June 4, 2026
datago

Security analysis

A100/100

Scanned June 4, 2026

npx -y skills add LeoLin990405/r-analytics-skill --skill arules --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Arules?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Arules
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/leolin990405-arules/badge)](https://www.skillsdirectory.com/skills/leolin990405-arules)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: arules
description: R arules package for association rules. Use for mining frequent itemsets and association rules.
---

# arules

Mining association rules and frequent itemsets.

## Transactions

```r
library(arules)

# From list
trans_list <- list(
  c("milk", "bread", "butter"),
  c("milk", "bread"),
  c("milk", "eggs"),
  c("bread", "butter", "eggs")
)
trans <- as(trans_list, "transactions")

# From data frame (binary)
trans <- as(df, "transactions")

# From CSV
trans <- read.transactions("basket.csv", format = "basket", sep = ",")
trans <- read.transactions("single.csv", format = "single", cols = c(1, 2))
```

## Inspect Transactions

```r
# Summary
summary(trans)

# View items
inspect(trans[1:5])

# Item frequency
itemFrequency(trans)
itemFrequency(trans, type = "absolute")

# Plot frequency
itemFrequencyPlot(trans, topN = 20)
```

## Apriori Algorithm

```r
# Mine frequent itemsets
itemsets <- apriori(trans,
  parameter = list(
    support = 0.01,
    target = "frequent itemsets"
  )
)

# Mine association rules
rules <- apriori(trans,
  parameter = list(
    support = 0.01,
    confidence = 0.5,
    minlen = 2
  )
)
```

## Rule Parameters

```r
rules <- apriori(trans,
  parameter = list(
    support = 0.01,      # Minimum support
    confidence = 0.5,    # Minimum confidence
    minlen = 2,          # Minimum items in rule
    maxlen = 10,         # Maximum items in rule
    target = "rules"     # "rules", "frequent itemsets", "maximally frequent itemsets"
  )
)
```

## Inspect Rules

```r
# Summary
summary(rules)

# View rules
inspect(rules)
inspect(head(sort(rules, by = "lift"), 10))

# Quality measures
quality(rules)
```

## Rule Measures

```r
# Support: P(A ∪ B)
# Confidence: P(B|A) = P(A ∪ B) / P(A)
# Lift: P(B|A) / P(B)

# Additional measures
interestMeasure(rules, c("chiSquared", "conviction", "leverage"), trans)
```

## Filtering Rules

```r
# By quality
high_conf <- subset(rules, confidence > 0.8)
high_lift <- subset(rules, lift > 2)

# By items
milk_rules <- subset(rules, items %in% "milk")
lhs_milk <- subset(rules, lhs %in% "milk")
rhs_milk <- subset(rules, rhs %in% "milk")

# Redundant rules
non_redundant <- rules[!is.redundant(rules)]
```

## Sorting Rules

```r
# Sort by measure
sorted <- sort(rules, by = "confidence", decreasing = TRUE)
sorted <- sort(rules, by = "lift")
sorted <- sort(rules, by = "support")

# Top N rules
top_rules <- head(sort(rules, by = "lift"), 20)
```

## Visualization

```r
library(arulesViz)

# Scatter plot
plot(rules)
plot(rules, measure = c("support", "lift"), shading = "confidence")

# Graph
plot(rules, method = "graph", limit = 20)

# Grouped matrix
plot(rules, method = "grouped")

# Parallel coordinates
plot(rules, method = "paracoord")
```

## ECLAT Algorithm

```r
# Faster for frequent itemsets
itemsets <- eclat(trans,
  parameter = list(
    support = 0.01,
    minlen = 2
  )
)
```

## Closed/Maximal Itemsets

```r
# Closed itemsets
closed <- apriori(trans,
  parameter = list(
    support = 0.01,
    target = "closed frequent itemsets"
  )
)

# Maximal itemsets
maximal <- apriori(trans,
  parameter = list(
    support = 0.01,
    target = "maximally frequent itemsets"
  )
)
```

## Save/Load

```r
# Save rules
write(rules, file = "rules.csv", sep = ",")

# Save as RDS
saveRDS(rules, "rules.rds")
rules <- readRDS("rules.rds")
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.