R/long2wide_omv.R
long2wide_omv.Rd
Converts .omv-files for the statistical spreadsheet 'jamovi' (https://www.jamovi.org) from long to wide format
Name (including the path, if required) of the data file to be read (e.g., "FILE_IN.omv"; default: ""); can be any supported file type, see Details below
Name (including the path, if required) of the data file to be written (e.g., "FILE_OUT.omv"; default: ""); if empty, FILE_IN from fleInp is extended with "_wide(file extension -> .omv)"
Names of one or more variables that identify the same group / individual (default: c())
Name of the variable(s) that differentiates multiple records from the same group / individual (default: c())
Name of the variable(s) should be excluded from the transformation, typically this will be between-subject-variable(s) (default: c())
Names of one or more variables to be transformed / reshaped (other variables are excluded, if empty(c()) all variables except varTme, varID and varExc are included; default: c())
Separator character when concatenating the fixed and time-varying part of the variable name ("VAR1_1", "VAR1_2"; default: "_")
How variables / columns are organized: for "times" (default) the steps of the time varying variable are adjacent, for "vars" the steps of the original columns in the long dataset
Variable(s) that are used to sort the data frame (see Details; if empty, the order returned from reshape is kept; default: c())
Name of the package: "foreign" or "haven" that shall be used to read SPSS, Stata and SAS files; "foreign" is the default (it comes with base R), but "haven" is newer and more comprehensive
Name of the data set that is to be selected from the workspace (only applies when reading .RData-files)
Additional arguments passed on to methods; see Details below
The ellipsis-parameter (...) can be used to submit arguments / parameters to the functions that are used for transforming or reading the data. The transformation uses reshape
. When reading the
data, the functions are: read_omv
(for jamovi-files), read.table
(for CSV / TSV files; using similar defaults as read.csv
for CSV and read.delim
for TSV which both are based upon
read.table
but with adjusted defaults for the respective file types), readRDS
(for rds-files), read_sav
(needs R-package "haven") or read.spss
(needs R-package "foreign") for SPSS-files,
read_dta
("haven") / read.dta
("foreign") for Stata-files, read_sas
("haven") for SAS-data-files, and read_xpt
("haven") / read.xport
("foreign") for SAS-transport-files. If you would
like to use "haven", it may be needed to install it manually (i.e., install.packages("haven", dep = TRUE)
).
if (FALSE) {
library(jmvReadWrite)
# generate a test dataframe with 100 (imaginary) participants / units of
# observation (ID), 8 measurement (measure) of one variable (X)
dtaInp <- data.frame(ID = rep(as.character(seq(1, 100)), each = 8),
measure = rep(seq(1, 8), times = 100),
X = runif(800, -10, 10))
cat(str(dtaInp))
# the output should look like this
# 'data.frame': 800 obs. of 3 variables:
# $ ID : chr "1" "1" "1" "1" ...
# $ measure: int 1 2 3 4 5 6 7 8 1 2 ...
# $ X : num ...
# this data set is stored as (temporary) RDS-file and later processed by long2wide
nmeInp <- paste0(tempfile(), ".rds")
nmeOut <- paste0(tempfile(), ".omv")
saveRDS(dtaInp, nmeInp)
long2wide_omv(fleInp = nmeInp, fleOut = nmeOut, varID = "ID", varTme = "measure", varTgt = "X")
# it is required to give at least the arguments fleInp, varID and varTme
# check whether the file was created and its size
cat(list.files(dirname(nmeOut), basename(nmeOut)))
# -> "file[...].omv" ([...] contains a random combination of numbers / characters
cat(file.info(nmeOut)$size)
# -> 6851 (approximate size; size may differ in every run [in dependence of
# how well the generated random data can be compressed])
cat(str(read_omv(nmeOut, sveAtt = FALSE)))
# the data set is now transformed into wide (and each the measurements is now
# indicated as a suffix to X; X_1, X_2, ...)
# 'data.frame': 100 obs. of 9 variables:
# $ ID : chr "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" ...
# ..- attr(*, "jmv-id")= logi TRUE
# ..- attr(*, "missingValues")= list()
# $ X_1: num ...
# ..- attr(*, "missingValues")= list()
# $ X_2: num ...
# ..- attr(*, "missingValues")= list()
# $ X_3: num ...
# ..- attr(*, "missingValues")= list()
# $ X_4: num ...
# ..- attr(*, "missingValues")= list()
# $ X_5: num ...
# ..- attr(*, "missingValues")= list()
# $ X_6: num ...
# ..- attr(*, "missingValues")= list()
# $ X_7: num ...
# ..- attr(*, "missingValues")= list()
# $ X_8: num ...
# ..- attr(*, "missingValues")= list()
unlink(nmeInp)
unlink(nmeOut)
}