daff is an R package that can find difference in values between
data.frames, store this difference, render it and apply this difference to patch a
data.frame. It can also merge two versions of a
data.frame having a common parent.
It wraps the daff.js library using the V8 package.
The diff format is described in http://dataprotocols.org/tabular-diff-format.
Install from CRAN
The latest version of
daff can be installed with
Calculate the difference between a reference and a changed
library(daff)y <- iris[1:3,]x <- yx <- head(x,2) # remove a rowx[1,1] <- 10 # change a valuex$hello <- "world" # add a columnx$Species <- NULL # remove a columnpatch <- diff_data(y, x)# write a patch to diskwrite_diff(patch, "patch.csv")
render_diff(patch) will generate the following HTML page:
data.frame using a diff generated with
# read a diff from diskpatch <- read_diff("patch.csv")# apply patchy_patched <- patch_data(y, patch)
data.frames that have diverged from a common parent
parent <- a <- b <- iris[1:3,]a[1,1] <- 10b[2,1] <- 11# succesful mergemerge_data(parent, a, b)parent <- a <- b <- iris[1:3,]a[1,1] <- 10b[1,1] <- 11# conflicting merge (both a and b change same cell)merged <- merge_data(parent, a, b)merged #note the conflict#find out which rows contain a conflictwhich_conflicts(merged)