[R] Binding objects with a similar name

jimdare jamesdare26 at gmail.com
Tue Oct 13 05:34:55 CEST 2009


Thanks Jim,

Further from this; the data I have doen't appear to be that complete for
some species e.g

result$MOO
1992 2000 2002 
3060 1300 1300 

How can I change this list into a time series so that I can create a
meaningful plot e.g.

1992 1993 1994 1995 1996 1997 1998 1999 2000  2001  2002  2003  2004  2005
3060    0     0      0      0      0      0     0    1300    0    1300     0     
0       0

2006  2007  2008  2009
  0       0      0       0
 
Once again, your help is much appreciated.

James




jholtman wrote:
> 
> Instead of creating a lot of variables, work with a list.  Since you
> did not supply any test data, I will make a guess at the code would be
> like:
> 
> result <- lapply(split(newdataset, newdataset$target_species),
> function(.spec){
>     tappy(.spec$total_hook_num, .spec$year, sum)
> })
> 
> You can summarize from this list to the species easily by something like
> this:
> 
> sapply(result, sum)
> 
> but I would have to see the data to be sure.
> 
> On Mon, Oct 12, 2009 at 4:26 PM, jimdare <jamesdare26 at gmail.com> wrote:
>>
>> Dear R users,
>>
>> The code below splits a dataset by "target_species" and then further
>> splits
>> each target species group by year.  Finally the sum of a variable called
>> "total_hook_num" is calculated and then assigned a name based on
>> (paste(a$target_species[1],a$year[1],sep="").
>>
>> newsplit<-split(newdataset,list(newdataset$target_species))
>> for(i in newsplit){
>>
>> by.year<-split(i,list(i$year))
>> for(a in by.year){
>> assign(paste(a$target_species[1],a$year[1],sep=""),sum(a$total_hook_num))
>> }
>> }
>>
>> The end result is a single value for the number of hooks in a particular
>> year for a particular species (e.g. YFN2005<-2320) for every
>> species/year.
>> This results in number of individual objects being created, as you can
>> see
>> from ls().  I need to bind objects that have the same "target_speices"
>> name,
>> in order of year e.g. ALBtimeseries<-cbind(ALB1989,
>> ALB2990,.....,ALB2009).
>>
>> My questions are: is there a way to do this by working cbind into the
>> loop;
>> and if not, is there a way to bind objects that have a common name e.g.
>> all
>> ALB****?
>>
>> Thank you very much for your time, it's much appreciated.
>> James
>>
>>> ls()
>>  [1] "a"          "ALB1989"    "ALB1990"    "ALB1991"    "ALB1992"
>>  [6] "ALB1993"    "ALB1994"    "ALB1995"    "ALB1996"    "ALB1997"
>>  [11] "ALB1998"    "ALB1999"    "ALB2000"    "ALB2001"    "ALB2002"
>>  [16] "ALB2003"    "ALB2004"    "ALB2005"    "ALB2006"    "ALB2007"
>>  [21] "ALB2008"    "ALB2009"    "BIG1990"    "BIG1991"    "BIG1992"
>>  [26] "BIG1993"    "BIG1994"    "BIG1995"    "BIG1996"    "BIG1997"
>>  [31] "BIG1998"    "BIG1999"    "BIG2000"    "BIG2001"    "BIG2002"
>>  [36] "BIG2003"    "BIG2004"    "BIG2005"    "BIG2006"    "BIG2007"
>>  [41] "BIG2008"    "BIG2009"    "BTU1992"    "BTU2001"    "BTU2004"
>>  [46] "BWS2000"    "by.year"    "data1"      "data2"      "datacomb"
>>  [51] "i"          "logic"      "logic2"     "MAK1992"    "MOO1992"
>>  [56] "MOO2000"    "MOO2002"    "newdataset" "newsplit"   "NTU1994"
>>  [61] "NTU1995"    "NTU1996"    "NTU1997"    "NTU1998"    "NTU1999"
>>  [66] "NTU2000"    "NTU2001"    "NTU2002"    "NTU2003"    "NTU2004"
>>  [71] "NTU2005"    "NTU2007"    "NTU2008"    "NTU2009"    "SKJ1990"
>>  [76] "SKJ1996"    "SKJ1998"    "SKJ2003"    "STM1992"    "STM1995"
>>  [81] "STM1996"    "STM1999"    "STM2000"    "STM2007"    "STM2008"
>>  [86] "STN1990"    "STN1991"    "STN1992"    "STN1993"    "STN1994"
>>  [91] "STN1995"    "STN1996"    "STN1997"    "STN1998"    "STN1999"
>>  [96] "STN2000"    "STN2001"    "STN2002"    "STN2003"    "STN2004"
>> [101] "STN2005"    "STN2006"    "STN2007"    "STN2008"    "STN2009"
>> [106] "STU1994"    "STU1996"    "STU2000"    "STU2002"    "STU2004"
>> [111] "swordfish"  "TOR2001"    "TOR2002"    "TOR2003"    "TOR2004"
>> [116] "TOR2005"    "TOR2006"    "TOR2007"    "TOR2008"    "TOR2009"
>> [121] "TUN1997"    "TUN1998"    "TUN1999"    "TUN2001"    "YFN1990"
>> [126] "YFN1991"    "YFN1992"    "YFN1993"    "YFN1994"    "YFN1995"
>> [131] "YFN1996"    "YFN1997"    "YFN1998"    "YFN1999"    "YFN2000"
>> [136] "YFN2001"    "YFN2002"    "YFN2003"    "YFN2004"    "YFN2005"
>> [141] "YFN2006"    "YFN2007"    "YFN2008"
>>
>>
>>
>>
>> --
>> View this message in context:
>> http://www.nabble.com/Binding-objects-with-a-similar-name-tp25862663p25862663.html
>> Sent from the R help mailing list archive at Nabble.com.
>>
>> ______________________________________________
>> 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.
>>
> 
> 
> 
> -- 
> Jim Holtman
> Cincinnati, OH
> +1 513 646 9390
> 
> What is the problem that you are trying to solve?
> 
> ______________________________________________
> 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.
> 
> 

-- 
View this message in context: http://www.nabble.com/Binding-objects-with-a-similar-name-tp25862663p25866698.html
Sent from the R help mailing list archive at Nabble.com.




More information about the R-help mailing list