Multiple plots and postscripts using split function
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.pikal at 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-bounces at r-project.org [mailto:r-help-bounces at r-
project.org] On Behalf Of fd
Sent: Thursday, July 31, 2014 4:37 PM
To: r-help at 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 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.
________________________________ 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.