Data Input from Spreadsheet
Reads a file in Data Interchange Format (DIF) and creates a data frame from it. DIF is a format for data matrices such as single spreadsheets.
read.DIF(file, header = FALSE, dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"), row.names, col.names, as.is = !stringsAsFactors, na.strings = "NA", colClasses = NA, nrows = -1, skip = 0, check.names = TRUE, blank.lines.skip = TRUE, stringsAsFactors = default.stringsAsFactors(), transpose = FALSE, fileEncoding = "")
- the name of the file which the data are to be read from,
or a connection, or a complete URL.
"clipboard"may also be used on Windows, in which case
read.DIF("clipboard")will look for a DIF format entry in the Windows clipboard.
- a logical value indicating whether the spreadsheet contains the
names of the variables as its first line. If missing, the value is
determined from the file format:
headeris set to
TRUEif and only if the first row contains only character values and the top left cell is empty.
- the character used in the file for decimal points.
- string indicating how to convert numbers whose conversion
to double precision would lose accuracy, see
- a vector of row names. This can be a vector giving
the actual row names, or a single number giving the column of the
table which contains the row names, or character string giving the
name of the table column containing the row names.
If there is a header and the first row contains one fewer field than the number of columns, the first column in the input is used for the row names. Otherwise if
row.namesis missing, the rows are numbered.
row.names = NULLforces row numbering.
- a vector of optional names for the variables.
The default is to use
"V"followed by the column number.
- the default behavior of
read.DIFis to convert character variables to factors. The variable
as.iscontrols the conversion of columns not otherwise specified by
colClasses. Its value is either a vector of logicals (values are recycled if necessary), or a vector of numeric or character indices which specify which columns should not be converted to factors.
Note: to suppress all conversions including those of numeric columns, set
colClasses = "character".
as.isis specified per column (not per variable) and so includes the column of row names (if any) and any columns to be skipped.
- a character vector of strings which are to be
NAvalues. Blank fields are also considered to be missing values in logical, integer, numeric and complex fields.
- character. A vector of classes to be assumed for
the columns. Recycled as necessary, or if the character vector is
named, unspecified values are taken to be
Possible values are
"NULL"(when the column is skipped), one of the atomic vector classes (logical, integer, numeric, complex, character, raw), or
"POSIXct". Otherwise there needs to be an
asmethod (from package methods) for conversion from
"character"to the specified formal class.
colClassesis specified per column (not per variable) and so includes the column of row names (if any).
- the maximum number of rows to read in. Negative values are ignored.
- the number of lines of the data file to skip before beginning to read data.
- logical. If
TRUEthen the names of the variables in the data frame are checked to ensure that they are syntactically valid variable names. If necessary they are adjusted (by
make.names) so that they are, and also to ensure that there are no duplicates.
- logical: if
TRUEblank lines in the input are ignored.
- logical: should character vectors be converted to factors?
- logical, indicating if the row and column
interpretation should be transposed. Microsoft's Excel has been
known to produce (non-standard conforming) DIF files which would
transpose = TRUEto be read correctly.
- character string: if non-empty declares the
encoding used on a file (not a connection or clipboard) so the
character data can be re-encoded. See the Encoding section
of the help for
file, the R Data Import/Export Manual and Note.
A data frame (
data.frame) containing a representation of the data in the file. Empty input is an error unless
col.namesis specified, when a 0-row data frame is returned: similarly giving just a header line if
header = TRUEresults in a 0-row data frame.
The columns referred to in
the column of row names (if any).
Less memory will be used if
colClasses is specified as one of
the six atomic vector classes.
The DIF format specification can be found by searching on http://www.wotsit.org/; the optional header fields are ignored. See also https://en.wikipedia.org/wiki/Data_Interchange_Format.
The term is likely to lead to confusion: Windows will have a Windows Data Interchange Format (DIF) data format as part of its WinFX system, which may or may not be compatible.
The R Data Import/Export manual.
## read.DIF() may need transpose = TRUE for a file exported from Excel udir <- system.file("misc", package = "utils") dd <- read.DIF(file.path(udir, "exDIF.dif"), header = TRUE, transpose = TRUE) dc <- read.csv(file.path(udir, "exDIF.csv"), header = TRUE) stopifnot(identical(dd, dc), dim(dd) == c(4,2))