data.table is the package name too. Make sure you find ?"[.data.table" which is linked from ?data.table. You could just do a mean of one variable first, and then build it up from there e.g. dataset[, mean(epLsar), by="SPECSHOR,BONE"]. To get multiple columns of output, wrap with DT() like this dataset[, DT(mean(epLsar),min(epLsar)), by="SPECSHOR,BONE"] Btw, v1.3 on r-forge fixes a version check warning with v1.2 on R2.10+ (not fixed by me but thanks to a contributor) so if you can't live with the warning messages, you can install v1.3 from r-forge like this : install.packages("data.table",repos="http://r-forge.r-project.org")
Best of luck. "Ivan Calandra" <ivan.calan...@uni-hamburg.de> wrote in message news:4b59d93c.5080...@uni-hamburg.de... Thanks for your advice, I will work on it then! Just one last question. In which package can I find the function data.table? Ivan Le 1/22/2010 17:18, Matthew Dowle a écrit : > Great. > > If you mean the crantastic r package, sorry I wasn't clear, I meant the > crantastic website http://crantastic.org/. > If you meant the description of plyr then if the description looks useful > then click the link taking you to the package documentation and read it. > Same for any of the other packages. > > The idea, I think, is that its a good idea to make yourself aware of the > most popular packages i.e. perhaps just read the descriptions of the top > 30 > or something like that maybe. Maybe it helps you avoid re-inventing the > wheel. That seems to be the case here. > > Re Don's reply, sure you can use split(). But that will use more memory. > And using paste for this? Ok, it works, but don't you want to use better > ways? data.table should be much faster and more convenient, quicker to > write than split and paste like that. > > HTH > > > "Ivan Calandra"<ivan.calan...@uni-hamburg.de> wrote in message > news:4b59bdc5.60...@uni-hamburg.de... > I didn't know about crantastic actually. > I've looked what it is exactly and it indeed looks interesting, but I > don't really see how I would know that it would help me for the task. > There's a description of what it was built for, but how can I then know > which function from this package can help me? > > Thanks for your answer (you all), I'll work on it! > I'll keep you informed if it doesn't work (!), and I'll go vote on > crantastic when I'll have a bit more experience with the packages I use > (right now I'm just using the ones I was told for one specific > function), but don't worry I won't forget. As you said "It only works if > users contribute to it". That makes the power of R! > > Ivan > > > > Le 1/21/2010 19:01, Matthew Dowle a écrit : > >> One way is : >> >> dataset = data.table(ssfamed) >> dataset[,< whatever "some functions" are on Asfc, Smc, epLsar, etc>, >> by="SPECSHOR,BONE"] >> >> Your SPECSHOR and BONE names will be in your result alongside the results >> of >> the<whatever ...> >> >> Or try package plyr which does this sort of thing too. And sqldf may be >> better if you know SQL and prefer it. There are actually zillions of >> ways >> to do it : by(), doBy() etc etc >> >> If you get your code working the way its constructed currently, its >> going >> to be very slow, because of those "==". data.table doesn't do that and >> is >> pretty fast for this kind of thing. You might find that plyr is easier to >> use and more flexible though if speed isn't an issue, depending on >> exactly >> what you want to do. >> >> Whichever way you decide, consider voting on crantastic for the package >> you >> end up using, and that may be a quick and easy way for you to help new R >> users in the future, and help us all by reducing the r-help traffic on >> the >> same subject over and over again. >> >> Note that plyr is the 2nd spot on crantastic, it would have solved your >> problem without needing to write that code. If you check crantastic >> first >> and make sure you're aware of popular packages, it might avoid getting >> stuck >> in this way again. It only works if users contribute to it though. >> >> >> "Ivan Calandra"<ivan.calan...@uni-hamburg.de> wrote in message >> news:4b587cdd.4070...@uni-hamburg.de... >> >> >>> Hi everybody! >>> >>> To use some functions, I have to transform my dataset into a list, where >>> each element contains one group, and I have to prepare a list for each >>> variable I have (altogether I have 15 variables, and many entries per >>> factor level) >>> >>> Here is some part of my dataset: >>> SPECSHOR BONE Asfc Smc epLsar >>> cotau tx 454.390369 29.261638 0.001136 >>> cotau tx 117.445711 4.291884 0.00056 >>> cotau tx 381.024682 15.313017 0.002324 >>> cotau tx 159.081789 18.134533 0.000462 >>> cotau tm 160.641503 6.411332 0.000571 >>> cotau tm 79.238023 3.828254 0.001182 >>> cotau tm 143.20655 11.921899 0.000192 >>> cotau tm 115.476996 33.116386 0.000417 >>> cotau tm 594.256234 72.538131 0.000477 >>> eqgre tx 188.261324 8.279096 0.000777 >>> eqgre tx 152.444216 2.596325 0.001022 >>> eqgre tx 256.601507 8.279096 0.000566 >>> eqgre tx 250.816445 18.134533 0.000535 >>> eqgre tx 272.396711 24.492879 0.000585 >>> eqgre tm 172.63264 4.291884 0.001781 >>> eqgre tm 189.441097 14.425498 0.001347 >>> eqgre tm 170.743788 13.564472 0.000602 >>> eqgre tm 158.960849 10.385299 0.001189 >>> eqgre tm 80.972408 3.828254 0.000644 >>> gicam tx 294.494001 9.656738 0.000524 >>> gicam tx 267.126765 19.128024 0.000647 >>> gicam tx 81.888658 4.782006 0.000492 >>> gicam tx 168.32908 12.729939 0.001097 >>> gicam tx 123.296056 7.007427 0.000659 >>> gicam tm 94.264887 18.134533 0.000752 >>> gicam tm 54.317395 3.828254 0.00038 >>> gicam tm 55.978883 17.167534 0.000141 >>> gicam tm 279.597993 15.313017 0.000398 >>> gicam tm 288.262556 18.134533 0.001043 >>> >>> What I do next is: >>> ---- >>> list_Asfc<- list() >>> list_Asfc[[1]]<- ssfamed[ssfamed$SPECSHOR=='cotau'&ssfamed$BONE=='tx', >>> 3] >>> list_Asfc[[2]]<- ssfamed[ssfamed$SPECSHOR=='cotau'&ssfamed$BONE=='tm', >>> 3] >>> ---- >>> >>> And so on for each level of SPECSHOR and BONE >>> >>> I'm stuck on 2 parts: >>> - in a loop or something similar, I would like the 1st element of the >>> list to be filled by the values for the 1st variable with the first >>> level of my factors (i.e. cotau + tx), and then the 2nd element with the >>> 2nd level (i.e. cotau + tm) and so on. As shown above, I know how to do >>> it if I enter manually the different levels, but I have no idea which >>> function I should use so that each combination of factor will be used. >>> See what I mean? >>> >>> - I would then like to run it in a loop or something for each variable. >>> It is by itself not so complicated, but I don't know how to give the >>> correct name to my list. I want the list containing the data for Asfc to >>> be named "list_Asfc". >>> Here is what I tried: >>> ---- >>> seq.num<- c(seq(3,5,1)) #the indexes of the variables >>> for(i in 1:length(seq.num)) { >>> k<- seq.num[i] >>> name.num<- names(ssfamed)[k] >>> list<- list() >>> list[[1]]<- ssfamed[ssfamed$SPECSHOR=='cotau'&ssfamed$BONE=='tx', i] >>> list[[2]]<- ssfamed[ssfamed$SPECSHOR=='cotau'&ssfamed$BONE=='tm', i] >>> names(list)<- c("cotau_tx", "cotau_tm") #I have more and the 1st >>> question should help me on that too >>> } >>> ---- >>> After names(list) I need to insert something like: name_list<- list >>> But I don't know how to give it the correct name. How do we change the >>> name of an object? Or am I on the wrong path? >>> >>> Thank you in advance for your help. >>> Ivan >>> >>> PS: if necessary: under Windows XP, R2.10. >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> [[alternative HTML version deleted]] >>> >>> >>> >> ______________________________________________ >> R-help@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. >> >> >> > ______________________________________________ > R-help@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. > > -- Ivan CALANDRA PhD Student University of Hamburg Biozentrum Grindel und Zoologisches Institut und Museum Martin-Luther-King-Platz 3 D-20146 Hamburg, GERMANY +49(0)40 42838 6231 ivan.calan...@uni-hamburg.de ********** http://www.for771.uni-bonn.de http://webapp5.rrz.uni-hamburg.de/mammals/eng/mitarbeiter.php ______________________________________________ R-help@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.