[R] row.names in dunes and dunes.env?

Petr PIKAL petr.pikal at precheza.cz
Thu Apr 12 09:14:14 CEST 2012


Hi

see inline

> 
> Hello,
> 
> I've got a small dataset on box turtle shell measurements that I would 
> like to perform a detrended correspondence analysis on. I thought that 
it 
> would be interesting to examine the morphometrics for each species in 
the 
> area of overlap and in areas where neither species occurs. 
> 
> I've taken a look at the dune and dune.env datasets in vegan. Using the 
> str() command gives me 
> 
> > str(dune)
> 'data.frame':   20 obs. of  30 variables:
>  $ Belper: num  3 0 2 0 0 0 0 2 0 0 ...
>  $ Empnig: num  0 0 0 0 0 0 0 0 0 0 ...
>  $ Junbuf: num  0 3 0 0 0 0 0 0 0 0 ...
>  $ Junart: num  0 0 0 3 0 0 4 0 0 3 ...
>  ...
> 
> However, when I try looking directly at the data frame using the edit 
> command I see that there is a column called "row.names" to the left of 
"Belper".
> 
> Likewise, when I use the str() command on dune.env I get
> 
> > str(dune.env)
> 'data.frame':   20 obs. of  5 variables:
>  $ A1        : num  3.5 6 4.2 5.7 4.3 2.8 4.2 6.3 4 11.5 ...
>  $ Moisture  : Ord.factor w/ 4 levels "1"<"2"<"4"<"5": 1 4 2 4 1 1 4 1 2 
4 ...
>  $ Management: Factor w/ 4 levels "BF","HF","NM",..: 1 4 4 4 2 4 2 2 3 3 
...
>  $ Use       : Ord.factor w/ 3 levels "Hayfield"<"Haypastu"<..: 2 2 2 3 
2 
> 2 3 1 1 2 ...
>  $ Manure    : Ord.factor w/ 5 levels "0"<"1"<"2"<"3"<..: 3 4 5 4 3 5 4 
3 1 1 ...
> 
> but using the edit() command shows a column named "row.names".

No. This is not a column but it is what it says row.names

> str(rosin)
'data.frame':   10 obs. of  5 variables:
 $ pytel: int  1 2 3 4 5 6 7 8 9 10
 $ rstr : num  1.022 0.981 0.992 1.01 0.976 ...
 $ gama : num  1.4 1.44 1.41 1.43 1.39 ...
 $ cas  : int  0 3 6 9 12 15 18 21 24 27
 $ typ  : chr  "anatas" "anatas" "anatas" "anatas" 


> head(rosin)
  pytel      rstr     gama cas    typ
1     1 1.0216621 1.397885   0 anatas
2     2 0.9809663 1.442439   3 anatas
3     3 0.9916211 1.411767   6 anatas
^^ these are row names

> 
> I assume that the the "row.names" column is used to link the two files 
together.

If you are in doubt, recommended way is to consult documentation.

?row.names
All data frames have a row names attribute, a character vector of length 
the number of rows with no duplicates nor missing values. 

> 
> My turtle data is saved as a *.csv, and I've added a column called 
> "row.names", so that it looks like this
> 
> row.names,CL,CCL,CW,CCW,CH,CCH
> 1,104.4,131.8,89.887,137.4,43.391,89.7
> 2,108.79,135.9,87.78,118.1,50.72,71.2
> 3,114.12,126.1,89.33,132.8,142.39,78.3
> 4,102.87,128.2,84.2,125,45.42,72.4
> 5,84.6,104.8,72.61,111.8,41.1,57.3
> 
> I've called this file "turtles_dca.csv". I've also created a file called 

> "turtles_dca_env.csv" that looks like this
> 
> row.names,Species,Sex,Distribution,Concatenated,Species_overlap
> 1,Terrapene_ornata,Female,overlap,TO_F_Overlap,TO_Overlap
> 2,Terrapene_ornata,Female,overlap,TO_F_Overlap,TO_Overlap
> 3,Terrapene_ornata,Female,overlap,TO_F_Overlap,TO_Overlap
> 4,Terrapene_ornata,Female,overlap,TO_F_Overlap,TO_Overlap
> 5,Terrapene_ornata,Female,overlap,TO_F_Overlap,TO_Overlap
> 
> However, when I read the data into R using this command
> 
> turtles.env = read.csv("turtles_dca_env.csv", header = TRUE)
> 
> 
> and then using the str() command I get 
> 
> 
> > str(turtles)
> 'data.frame':   67 obs. of  7 variables:
>  $ row.names: int  1 2 3 4 5 6 7 8 9 10 ...
>  $ CL       : num  104.4 108.8 114.1 102.9 84.6 ...
>  $ CCL      : num  132 136 126 128 105 ...
>  $ CW       : num  89.9 87.8 89.3 84.2 72.6 ...
>  $ CCW      : num  137 118 133 125 112 ...
>  $ CH       : num  43.4 50.7 142.4 45.4 41.1 ...
>  $ CCH      : num  89.7 71.2 78.3 72.4 57.3 73.4 67 57 68.8 68 ...
> 
> When I run decorana() on this dataset, it appears that the column 
> "row.names" is included in the analysis, which isn't what I'm looking 
for. 

Then why you added this column to your data?

> 
> If I go ahead and delete the column "row.names" from my data frames 
(i.e. 
> removing it from turtles and turtles.env), I don't believe that the 
> analysis is performed correctly. The two species differ significantly in 

> most of their measurements, but the ordihull() and ordispider() commands 

> show them overlapping almost completely.
> 
> I think that I'm missing something pretty basic about inputting and 
> formatting this data for this analysis. Can anyone offer a suggestion on 

> where I'm going astray? I can send a copy of the data if anyone wants to 
look at it.

I am not familiar with functions you use. However you probably want to 
link those 2 files together. If they both are in the same order you can 
just do

turtles.complet <- cbind(turtles, turtles.env)

Or if they are in different order you need to find some common column(s) 
and 

?merge

those two files.

Regards 
Petr


> 
> Best wishes,
> Chris
> University of Central Oklahoma
>    [[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide 
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list