Re: [R] data.frame transformation

From: Gavin Simpson <gavin.simpson_at_ucl.ac.uk>
Date: Wed, 30 Jan 2008 20:05:14 +0000

hits=-2.6 tests=BAYES_00
X-USF-Spam-Flag: NO

Hi Christian,

Use the fact that 0 * lat[i] == 0 and 1 * lat[i] == lat[i], where lat[i] is one of your lat values. Also use the fact that R is vectorized.

So we have:

grid.id<-c(1:4)

lat<-c(10,12,13,15)
species1<-c(0,0,0,1)
species2<-c(1,1,0,0)
species3<-c(1,1,1,1)

## don't need cbind here &
## data is not a good name, use something else df <- data.frame(grid.id, lat, species1, species2, species3)

So to get what you want:

df[,-(1:2)] * df$lat

and if you want to assign this into df to make the change permanent:

df[,-(1:2)] <- df[,-(1:2)] * df$lat

We drop the first two columns so you don't need to know how many species you have, just that there are two columns we don't want to mess with.

HTH G

On Wed, 2008-01-30 at 19:47 +0100, Christian Hof wrote:
> Dear all,
> maybe somebody can provide some help for this problem:
>
> Example:
> I've got the following dataframe "data":
>
> grid.id<-c(1:4)
> lat<-c(10,12,13,15)
> species1<-c(0,0,0,1)
> species2<-c(1,1,0,0)
> species3<-c(1,1,1,1)
> data<-data.frame(cbind(grid.id,lat,species1,species2,species3))
>
> How can I, out of "data" make a new dataframe, where the cells of value
> "1" in the species columns ("species1" to "species3") are replaced by
> the respective "lat" values automatically - so that the final dataframe
> looks like this:
>
> specieslat1<-c(0,0,0,15)
> specieslat2<-c(10,12,0,0)
> specieslat3<-c(10,12,13,15)
> data.frame(cbind(grid.id,lat,specieslat1,specieslat2,specieslat3))
>
> ?
>
> Thanks a lot,
> cheers
> Christian
>

-- 
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
 Dr. Gavin Simpson             [t] +44 (0)20 7679 0522
 ECRC, UCL Geography,          [f] +44 (0)20 7679 0565
 Pearson Building,             [e] gavin.simpsonATNOSPAMucl.ac.uk
 Gower Street, London          [w] http://www.ucl.ac.uk/~ucfagls/
 UK. WC1E 6BT.                 [w] http://www.freshwaters.org.uk
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%

______________________________________________
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.
Received on Wed 30 Jan 2008 - 20:22:22 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Wed 30 Jan 2008 - 21:30:09 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive