[R] rep for multiple categories

Steven McKinney smckinney at bccrc.ca
Tue Mar 29 03:44:54 CEST 2011


Hi Kathi,

Are you looking for something like this?

> Alist <- letters[1:4]
> Blist <- 1:5
> Clist <- LETTERS[24:26]
> Alist
[1] "a" "b" "c" "d"
> Blist
[1] 1 2 3 4 5
> Clist
[1] "X" "Y" "Z"

> expand.grid(Alist, Blist, Clist)
   Var1 Var2 Var3
1     a    1    X
2     b    1    X
3     c    1    X
4     d    1    X
5     a    2    X
6     b    2    X
7     c    2    X
8     d    2    X
9     a    3    X
10    b    3    X
11    c    3    X
12    d    3    X
13    a    4    X
14    b    4    X
15    c    4    X
16    d    4    X
17    a    5    X
18    b    5    X
19    c    5    X
20    d    5    X
21    a    1    Y
22    b    1    Y
23    c    1    Y
24    d    1    Y
25    a    2    Y
26    b    2    Y
27    c    2    Y
28    d    2    Y
29    a    3    Y
30    b    3    Y
31    c    3    Y
32    d    3    Y
33    a    4    Y
34    b    4    Y
35    c    4    Y
36    d    4    Y
37    a    5    Y
38    b    5    Y
39    c    5    Y
40    d    5    Y
41    a    1    Z
42    b    1    Z
43    c    1    Z
44    d    1    Z
45    a    2    Z
46    b    2    Z
47    c    2    Z
48    d    2    Z
49    a    3    Z
50    b    3    Z
51    c    3    Z
52    d    3    Z
53    a    4    Z
54    b    4    Z
55    c    4    Z
56    d    4    Z
57    a    5    Z
58    b    5    Z
59    c    5    Z
60    d    5    Z


Steven McKinney
________________________________________
From: r-help-bounces at r-project.org [r-help-bounces at r-project.org] On Behalf Of BORGMANN,Kathi [kborgmann at audubon.org]
Sent: March 28, 2011 11:43 AM
To: r-help at r-project.org
Subject: [R] rep for multiple categories

Hi,
I am R beginner and am trying to figure out how to generate a complete list of species for every point, visit, and year. The code below is close but does not give me a list of species for every point, visit, and year in my data set.

spplist<-unique(sumPtCt$Species)
spplength<-length(spplist)
Pointlist<-unique(sumPtCt$Point)
Pointlength<-length(Pointlist)
Visitlist<-unique(sumPtCt$Visit)
Visitlength<-length(Visitlist)
Yearlist<-unique(sumPtCt$Year)
Yearlength<-length(Yearlist)
s<-rep(spplist, each=Pointlength, Visitlength, Yearlength)
p<-rep(Pointlist, spplength)
v<-rep(Visitlist, spplength)
y<-rep(Yearlist, spplength)
template<-data.frame(Species=s,Point=p, Visit=v, Year=y)

###merge template and data and replace NAs with 0
FinalPtCt<-merge(template, sumPtCt, all=T)
FinalPtCt$Number[is.na(FinalPtCt$Number)]<-0


Essentially I have data that look like this
 SPP  Point  Visit  Number
BUFF   1      1       5
WEGR   1      1       10
CLGR   1      1       15
WEGU   2      1        5
RUDU   2      1       15
HOGR   2      1        5


But I want to generate this
Spp  Point              Visit                   Number
BUFF  1               1               5
WEGR  1               1               10
CLGR  1               1               15
WEGU  1               1               0
RUDU  1               1               0
HOGR  1               1               0
WEGU  2               1               5
RUDU  2               1               15
HOGR  2               1               5
BUFF  2               1               0
WEGR  2               1               0
CLGR  2               1               0

______________________________________________
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