Have you tried using the merge() function?  E.g.,

lapply(split(d, d$NAME), function(di)merge(all=TRUE, di,
data.frame(YEAR=seq(min(di$YEAR), max(di$YEAR), by=1))))
Bill Dunlap
TIBCO Software
wdunlap tibco.com


On Fri, Aug 1, 2014 at 8:22 PM, Florian Denzinger
<florian.denzin...@uzh.ch> wrote:
> Thank you everyone for your help so far.
>
> I am still working on the problem to get a merged new dataframe which fills 
> in new rows with NA values for each year that is missing for plotting with 
> gaps ( in the example the item BARTLEY: years 1984 to 1987 should be filled 
> with a row containing NA values). Could someone maybe help me with this? 
> Thank you.
>
>
>     NAME                                 ID             YEAR    VALUE
>     ADAMS                               885             1988          -2
>     ADAMS                               885             1989            0
>     BAHIA DEL DIABLO    2665    1999            4
>     BAHIA DEL DIABLO    2665    2000            8
>     BAHIA DEL DIABLO    2665    2001          19
>     BAHIA DEL DIABLO    2665    2002          13
>     BAHIA DEL DIABLO    2665    2003          13
>     BARTLEY                             893             1983            0
>     BARTLEY                             893             1988            2
>     BARTLEY                             893             1989           -1
>     CANADA                              877             1972           -1
>     CLARK CPI                   894             1973           -3
>
> Am 01.08.2014 um 11:27 schrieb PIKAL Petr <petr.pi...@precheza.cz>:
>
>> Hi
>>
>> Maybe others will disagree but I find for cycle for this type of task better 
>> than sapply.
>>
>> for(i in 1:length(ind)) {
>>
>> if (there are more than 3 date items*) {
>>
>> postscript(ind[i])
>> do all plotting
>> dev.off()
>> }}
>>
>> If you want to plot with gaps you need to add all relevant YEARs for x axis 
>> with missing value in y before plotting. Then R plots it automatically with 
>> gap.
>>
>> x<-1:10
>> y<-rnorm(10)
>> y[5:6]<-NA
>> plot(x,y, type="b")
>>
>> I would suggest to use merge for this task.
>>
>> table(dat$ID)
>> gives you number of unique values for each ID and you can use it for 
>> discarding this ID from the list.
>>
>> Regards
>> Petr
>>
>>
>>> -----Original Message-----
>>> From: r-help-boun...@r-project.org [mailto:r-help-bounces@r-
>>> project.org] On Behalf Of fd
>>> Sent: Thursday, July 31, 2014 4:37 PM
>>> To: r-help@r-project.org
>>> Subject: [R] Multiple plots and postscripts using split function
>>>
>>> Hi,
>>>
>>> I'm relatively new to R and I would like to do the following:
>>>
>>> I have a .csv file with four columns (NAME, ID, YEAR, VALUE) and would
>>> like to do several xy plots with the year on the x-axis and the data
>>> values
>>> (measurements) on the y-axis and after that export the different plots
>>> to postcript.
>>>
>>> My .csv file looks something like this (only an example):
>>>
>>> NAME                          ID              YEAR    VALUE
>>> ADAMS                         885             1988            -2
>>> ADAMS                         885             1989            0
>>> BAHIA DEL DIABLO              2665            1999            4
>>> BAHIA DEL DIABLO              2665            2000            8
>>> BAHIA DEL DIABLO              2665            2001            19
>>> BAHIA DEL DIABLO              2665            2002            13
>>> BAHIA DEL DIABLO              2665            2003            13
>>> BARTLEY                               893             1983            0
>>> BARTLEY                               893             1984            -1
>>> BARTLEY                               893             1985            0
>>> BARTLEY                               893             1988            2
>>> BARTLEY                               893             1989            -1
>>> CANADA                                877             1972            -1
>>>
>>> I have split the different items into groups and I'd like the plots to
>>> have the title of NAME but the filename of the postscript to be
>>> exported should have the ID as filename.
>>>
>>> My code so far:
>>>
>>> #Set Working Directory:
>>> setwd("/Users/Desktop/FV")
>>> # Read CSV
>>> dat <- read.csv("FV.csv", sep=";", header=TRUE) # Split Data ind <-
>>> split(x = dat,f = dat[,'ID']) nam <- names(ind)
>>>
>>> sapply(nam, function(x) {
>>>      postscript(x)
>>>      par(mar=c(6,8,6,5), cex=0.8)
>>>      plot(ind[[x]][,c('YEAR','VALUE')],
>>>      type='b',
>>>      main = x,
>>>      xlab="Time [Years]",
>>>      ylab="Front variation")
>>>      axis(1, at = seq(1800,2100,5), cex.axis=1, labels=FALSE, tcl=-
>>> 0.3)
>>>      axis(2, at = seq(-100000,100000,500), cex.axis=1, labels=FALSE,
>>> tcl=-0.3)
>>>
>>>      dev.off()
>>> })
>>>
>>> This results in plots with the title and filename of the resulting
>>> postscript being the same. Is there a way to get the plot title out of
>>> the NAME column and the filename out of the ID?
>>>
>>> Additionally I'd only like to plot graphs for items with more than 3
>>> data values. Is this possible to incorporate in the split command?
>>>
>>> Another point is that some items have gaps in the time series where no
>>> measurements were taken (in my example: BARTLEY from 1983 to 1985 and
>>> 1988 to 1989). I would like to plot using type= 'b' so that the points
>>> are connected with lines, but when doing that, the values between 1985
>>> and 1988 are automatically connected which I don't want. I'd like the
>>> plot to start again at the value where the gap ends (in my example from
>>> 1988 onwards). Is there a solution for this?
>>>
>>> Any help is kindly appreciated! Thanks for your help.
>>>
>>> Kind regards,
>>> fd
>>>
>>>
>>>
>>> --
>>> View this message in context: http://r.789695.n4.nabble.com/Multiple-
>>> plots-and-postscripts-using-split-function-tp4694850.html
>>> Sent from the R help mailing list archive at Nabble.com.
>>>
>>> ______________________________________________
>>> 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.
>>
>> ________________________________
>> Tento e-mail a jakékoliv k němu připojené dokumenty jsou důvěrné a jsou 
>> určeny pouze jeho adresátům.
>> Jestliže jste obdržel(a) tento e-mail omylem, informujte laskavě neprodleně 
>> jeho odesílatele. Obsah tohoto emailu i s přílohami a jeho kopie vymažte ze 
>> svého systému.
>> Nejste-li zamýšleným adresátem tohoto emailu, nejste oprávněni tento email 
>> jakkoliv užívat, rozšiřovat, kopírovat či zveřejňovat.
>> Odesílatel e-mailu neodpovídá za eventuální škodu způsobenou modifikacemi či 
>> zpožděním přenosu e-mailu.
>>
>> V případě, že je tento e-mail součástí obchodního jednání:
>> - vyhrazuje si odesílatel právo ukončit kdykoliv jednání o uzavření smlouvy, 
>> a to z jakéhokoliv důvodu i bez uvedení důvodu.
>> - a obsahuje-li nabídku, je adresát oprávněn nabídku bezodkladně přijmout; 
>> Odesílatel tohoto e-mailu (nabídky) vylučuje přijetí nabídky ze strany 
>> příjemce s dodatkem či odchylkou.
>> - trvá odesílatel na tom, že příslušná smlouva je uzavřena teprve výslovným 
>> dosažením shody na všech jejích náležitostech.
>> - odesílatel tohoto emailu informuje, že není oprávněn uzavírat za 
>> společnost žádné smlouvy s výjimkou případů, kdy k tomu byl písemně zmocněn 
>> nebo písemně pověřen a takové pověření nebo plná moc byly adresátovi tohoto 
>> emailu případně osobě, kterou adresát zastupuje, předloženy nebo jejich 
>> existence je adresátovi či osobě jím zastoupené známá.
>>
>> This e-mail and any documents attached to it may be confidential and are 
>> intended only for its intended recipients.
>> If you received this e-mail by mistake, please immediately inform its 
>> sender. Delete the contents of this e-mail with all attachments and its 
>> copies from your system.
>> If you are not the intended recipient of this e-mail, you are not authorized 
>> to use, disseminate, copy or disclose this e-mail in any manner.
>> The sender of this e-mail shall not be liable for any possible damage caused 
>> by modifications of the e-mail or by delay with transfer of the email.
>>
>> In case that this e-mail forms part of business dealings:
>> - the sender reserves the right to end negotiations about entering into a 
>> contract in any time, for any reason, and without stating any reasoning.
>> - if the e-mail contains an offer, the recipient is entitled to immediately 
>> accept such offer; The sender of this e-mail (offer) excludes any acceptance 
>> of the offer on the part of the recipient containing any amendment or 
>> variation.
>> - the sender insists on that the respective contract is concluded only upon 
>> an express mutual agreement on all its aspects.
>> - the sender of this e-mail informs that he/she is not authorized to enter 
>> into any contracts on behalf of the company except for cases in which he/she 
>> is expressly authorized to do so in writing, and such authorization or power 
>> of attorney is submitted to the recipient or the person represented by the 
>> recipient, or the existence of such authorization is known to the recipient 
>> of the person represented by the recipient.
>
> ______________________________________________
> 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.

Reply via email to