# Fuzzyjoin

> R fuzzyjoin package for fuzzy matching joins. Use for joining tables by inexact matching on strings, numbers, or distances.

- **Type:** Skill
- **Install:** `agentstack add skill-leolin990405-r-analytics-skill-fuzzyjoin`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [LeoLin990405](https://agentstack.voostack.com/s/leolin990405)
- **Installs:** 0
- **Category:** [Data & Analytics](https://agentstack.voostack.com/c/data-and-analytics)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [LeoLin990405](https://github.com/LeoLin990405)
- **Source:** https://github.com/LeoLin990405/r-analytics-skill/tree/main/sub-skills/r-data/r-data-manipulation/fuzzyjoin

## Install

```sh
agentstack add skill-leolin990405-r-analytics-skill-fuzzyjoin
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# fuzzyjoin

Join tables by inexact matching.

## String Matching

```r
library(fuzzyjoin)

# Regex join
regex_left_join(df1, df2, by = c("name" = "pattern"))
regex_inner_join(df1, df2, by = "name")

# Fuzzy string matching (stringdist)
stringdist_left_join(df1, df2, by = "name", max_dist = 2)
stringdist_inner_join(df1, df2, by = "name", method = "jw", max_dist = 0.1)

# Methods: "osa", "lv", "dl", "hamming", "lcs", "qgram", "cosine", "jaccard", "jw"
```

## Numeric Matching

```r
# Difference join (within tolerance)
difference_left_join(df1, df2, by = "value", max_dist = 5)

# Distance join
distance_left_join(df1, df2, by = c("x", "y"), max_dist = 10)
```

## Interval Matching

```r
# Interval join (overlapping ranges)
interval_left_join(df1, df2, by = c("start", "end"))

# Genome-style intervals
genome_left_join(df1, df2, by = c("chr", "start", "end"))
```

## Geographic Matching

```r
# Geo join (within distance)
geo_left_join(df1, df2,
  by = c("lat", "lon"),
  max_dist = 10,
  unit = "km"
)
```

## Custom Matching

```r
# Fuzzy join with custom function
fuzzy_left_join(df1, df2,
  by = c("x" = "y"),
  match_fun = function(x, y) abs(x - y) `)
)
```

## Semi and Anti Joins

```r
# Fuzzy semi join (filter matches)
stringdist_semi_join(df1, df2, by = "name", max_dist = 2)

# Fuzzy anti join (filter non-matches)
stringdist_anti_join(df1, df2, by = "name", max_dist = 2)
```

## All Join Types

```r
# Available for all fuzzy methods:
# _inner_join, _left_join, _right_join, _full_join
# _semi_join, _anti_join

stringdist_inner_join(df1, df2, by = "name")
stringdist_full_join(df1, df2, by = "name")
regex_semi_join(df1, df2, by = "name")
difference_anti_join(df1, df2, by = "value")
```

## Examples

```r
# Match company names with typos
companies =`, `<=`)
)
```

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [LeoLin990405](https://github.com/LeoLin990405)
- **Source:** [LeoLin990405/r-analytics-skill](https://github.com/LeoLin990405/r-analytics-skill)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-leolin990405-r-analytics-skill-fuzzyjoin
- Seller: https://agentstack.voostack.com/s/leolin990405
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
