boxuancui
DataExplorer
R

Automate Data Exploration and Treatment

Last updated Jun 28, 2026
545
Stars
95
Forks
11
Issues
0
Stars/day
Attention Score
91
Language breakdown
No language data available.
Files click to expand
README

DataExplorer

CRAN Version Downloads Total Downloads GitHub Stars R-CMD-check codecov CII Best Practices Contributor Covenant

Background

Exploratory Data Analysis (EDA) is the initial and an important phase of data analysis/predictive modeling. During this process, analysts/modelers will have a first look of the data, and thus generate relevant hypotheses and decide next steps. However, the EDA process could be a hassle at times. This R package aims to automate most of data handling and visualization, so that users could focus on studying the data and extracting insights.

Installation

The package can be installed directly from CRAN.

r
install.packages("DataExplorer")

However, the latest stable version (if any) could be found on GitHub, and installed using devtools package.

r
if (!require(devtools)) install.packages("devtools")
devtools::install_github("boxuancui/DataExplorer")

If you would like to install the latest development version, you may install the develop branch.

r
if (!require(devtools)) install.packages("devtools")
devtools::install_github("boxuancui/DataExplorer", ref = "develop")

Examples

The package is extremely easy to use. Almost everything could be done in one line of code. Please refer to the package manuals for more information. You may also find the package vignettes here.

Report

To get a report for the airquality dataset:

r
library(DataExplorer)
create_report(airquality)

To get a report for the diamonds dataset with response variable price:

r
library(ggplot2)
create_report(diamonds, y = "price")

Visualization

Instead of running create_report, you may also run each function individually for your analysis, e.g.,

r

View basic description for airquality data

introduce(airquality)

| | | |:---------------------|------:| | rows | 153 | | columns | 6 | | discrete_columns | 0 | | continuous_columns | 6 | | allmissingcolumns | 0 | | totalmissingvalues | 44 | | complete_rows | 111 | | total_observations | 918 | | memory_usage | 6,376 |

r

Plot basic description for airquality data

plot_intro(airquality)

r

View missing value distribution for airquality data

plot_missing(airquality)

r

Left: frequency distribution of all discrete variables

plot_bar(diamonds)

Right: price distribution of all discrete variables

plot_bar(diamonds, with = "price")

r

View frequency distribution by a discrete variable

plot_bar(diamonds, by = "cut")

r

View histogram of all continuous variables

plot_histogram(diamonds)

r

View histogram of all continuous variables

plot_histogram(diamonds, by = "cut")

r

View estimated density distribution of all continuous variables

plot_density(diamonds)

r

View quantile-quantile plot of all continuous variables

plot_qq(diamonds)

r

View quantile-quantile plot of all continuous variables by feature cut

plot_qq(diamonds, by = "cut")

r

View overall correlation heatmap

plot_correlation(diamonds)

r

View bivariate continuous distribution based on cut

plot_boxplot(diamonds, by = "cut")

r

Scatterplot price with all other continuous features

plotscatterplot(splitcolumns(diamonds)$continuous, by = "price", sampled_rows = 1000L)

r

Visualize principal component analysis

plot_prcomp(diamonds, maxcat = 5L)

#> 2 features with more than 5 categories ignored! #> color: 7 categories #> clarity: 8 categories

Interactive Plots

All plotting functions support plotly = TRUE to generate interactive charts (requires the plotly package). Hover, zoom, and pan to explore your data:

r
plot_histogram(diamonds, plotly = TRUE)

You can also generate a fully interactive HTML report:

r
create_report(diamonds, y = "price", plotly = TRUE)

Note: The plotly conversion relies on plotly::ggplotly(), which has known limitations with geomlabel and facetwrap (some labels or facet panels may not render correctly). See the vignette for details.

Feature Engineering

To make quick updates to your data:

r

Group bottom 20% clarity by frequency

group_category(diamonds, feature = "clarity", threshold = 0.2, update = TRUE)

Group bottom 20% clarity by price

group_category(diamonds, feature = "clarity", threshold = 0.2, measure = "price", update = TRUE)

Dummify diamonds dataset

dummify(diamonds) dummify(diamonds, select = "cut")

Set values for missing observations

df <- data.frame("a" = rnorm(260), "b" = rep(letters, 10)) df[sample.int(260, 50), ] <- NA set_missing(df, list(0L, "unknown"))

Update columns

update_columns(airquality, c("Month", "Day"), as.factor) update_columns(airquality, 1L, function(x) x^2)

Drop columns

drop_columns(diamonds, 8:10) drop_columns(diamonds, "clarity")

Articles

See article wiki page.

🔗 More in this category

© 2026 GitRepoTrend · boxuancui/DataExplorer · Updated daily from GitHub