write.dbf              package:foreign              R Documentation

Write a DBF File

Description:

     The function tries to write a data frame to a DBF file.

Usage:

     write.dbf(dataframe, file, factor2char = TRUE, max_nchar = 254)

Arguments:

dataframe: a data frame object.

    file: a file name to be written to.

factor2char: logical, default 'TRUE', convert factor columns to
          character: otherwise they are written as the internal integer
          codes.

max_nchar: The maximum number of characters allowed in a character
          field.  Strings which exceed this will be truncated with a
          warning.  See Details.

Details:

     Dots in column names are replaced by underlines in the DBF file,
     and names are truncated to 11 characters.

     Only vector columns of classes '"logical"', '"numeric"',
     '"integer"', '"character"', '"factor"' and '"Date"' can be
     written.  Other columns should be converted to one of these.

     Maximum precision (number of digits including minus sign and
     decimal sign) for numeric is 19 - scale (digits after the decimal
     sign) which is calculated internally based on the number of digits
     before the decimal sign.

     The original DBASE format limited character fields to 254 bytes.
     It is said that Clipper and FoxPro can read up to 32K, and it is
     possible to write a reader that could accept up to 65535 bytes.
     (The documentation suggests that only ASCII characters can be
     assumed to be supported.)  Readers expecting the older standard
     (which includes Excel 2003, Access 2003 and OpenOffice 2.0) will
     truncate the field to the maximum width modulo 256, so increase
     'max_nchar' only if you are sure the intended reader supports
     wider character fields.

Value:

     Invisible 'NULL'.

Note:

     Other applications have varying abilities to read the data types
     used here.  Microsoft Access reads '"numeric"', '"integer"',
     '"character"' and '"Date"' fields, including recognizing missing
     values, but not '"logical"' (read as '0,-1'). Microsoft Excel
     understood all possible types but did not interpret missing values
     in character fields correctly (showing them as character nuls).

Author(s):

     Nicholas J. Lewin-Koh, modified by Roger Bivand and Brian Ripley;
     shapelib by Frank Warmerdam.

References:

     <URL: http://shapelib.maptools.org/>

     <URL:
     http://www.clicketyclick.dk/databases/xbase/format/data_types.html>

See Also:

     'read.dbf'

Examples:

     str(warpbreaks)
     try1 <- paste(tempfile(), ".dbf", sep = "")
     write.dbf(warpbreaks, try1, factor2char = FALSE)
     in1 <- read.dbf(try1)
     str(in1)
     try2 <- paste(tempfile(), ".dbf", sep = "")
     write.dbf(warpbreaks, try2, factor2char = TRUE)
     in2 <- read.dbf(try2)
     str(in2)
     unlink(c(try1, try2))

