[R] Cross-tabulation of data from database

Jens Nieschulze
Wed, 27 Feb 2002 08:47:18 -0000

On Tue, 26 Feb 2002, Morten Sickel wrote:

%I am quite new to R, so please bear over with me if I have problems with the
%R terminology.
%
%I want to (try to) use R for some analyses within vegetation ecology, using
%the vegan package. I have my data in a postgresql database, and I manage to
%get them into R as a dataframe with columns for respectively: Name of the
%analysed m2, Name of the species, coverage of species in the square in %. I
%want to have the dataset transformed into a table similiar to the example
%tables in vegan, i.e, one column for each species, one row for each square.
%
%What I have done so far is to establish a connection to postgres using Rdbi,
%fetching the data :
%> dca.raw<-dbGetResult(dcaq)
%> dca.raw
%                                                nornavn dekningsgrad  ruteid
%1    Fjellmarikåpe                                                 1 LIASB01
%2    Gulaks                                                        3 LIASB01
%3    Harerug                                                       1 LIASB01
%4    Brearve                                                       1 LIASB01
%5    Sveve sp.                                                     5 LIASB01
%6    Finnskjegg                                                   50 LIASB01
%7    Setergråurt                                                   1 LIASB01
%8    Engrapp-gruppa                                                5 LIASB01
%9    Legeveronika                                                  1 LIASB01
%etc.
%(Norwegian species names, nornavn = species, dekningsgrad= coverage
%ruteid=name of square)
%then I converted it to a data frame:
%> dca.frame <- data.frame(dca.raw)
%and
%> dca.frame
%gives an output that seems reasonable.
%so, I thought I could use xtabs and tried:
%> xtabs(dekningsgrad ~ ruteid+nornavn, data=dca.frame)
%which, as far as I can see, is quite analogous to the inner part of the
%example given:
%> ftable(xtabs(breaks ~ wool + tension + replicate, data = warpbreaks))
%
%But I end up with:
%Error in Summary.factor(..., na.rm = na.rm) :
%        "sum" not meaningful for factors

I guess dekningsgrad (didn't know Norwegian can be this close to
German:Deckungsgrad) is read in as a factor. You can check the structure
of an object with str(), as in the example below
If this is the case you should convert it to numeric, something like
dca.raw$dekningsgrad<-as.numeric(dca.raw$dekningsgrad)
and go ahead

	JN

data(UCBAdmissions)

DF <- as.data.frame(UCBAdmissions)
> xtabs(Freq ~ Gender + Admit, DF)
        Admit
Gender   Admitted Rejected
  Male       1198     1493
  Female      557     1278
> str(DF)
`data.frame':   24 obs. of  4 variables:
 $ Admit : Factor w/ 2 levels "Admitted","Reje..": 1 2 1 2 1
2 1 2 1 2 ...
 $ Gender: Factor w/ 2 levels "Male","Female": 1 1 2 2 1 1 2
2 1 1 ...
 $ Dept  : Factor w/ 6 levels
"A","B","C","D",..: 1 1 1 1 2 2 2 2 3 3
...
 $ Freq  : num  512 313 89 19 353 207 17 8 120 205 ...


%
%And then,  as a still quite clueless R-user, I am stranded. I have been
%searching in the docs and mailinglist, but have not came across much
%information on xtabs and its prerequisites, I have probably stumbled into
%some quite basic R things, so any help would be greatly appreciated.
%
%Best regards,
%
%--
%Morten Sickel
%GIS Consultant
%Drøbak, Norway
%-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
%r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
%Send "info", "help", or "[un]subscribe"
%(in the "body", not the subject !)  To: r-help-request at
stat.math.ethz.ch
%_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
%

***********************************************************************
Jens Nieschulze

Institute for Forest Biometrics &	Phone: ++49-551-39-12107
Applied Computer Science		Fax  : ++49-551-39-3465
Buesgenweg 4
37077 Goettingen		E-mail: jniesch at uni-forst.gwdg.de
GERMANY				http://www.uni-forst.gwdg.de/~jniesch

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at
stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._