[R] Challenge extracting months

Jim Lemon drjimlemon at gmail.com
Thu Feb 2 01:07:51 CET 2017


Hi Kwesi,
I can get a plot out of your code without the colors (I don't have
RColorBrewer installed), but it doesn't look like the one you
attached. It is displaying:

prop.table(freqyears,margin=2)*100/365

which contains 20 rows and 37 columns. There are a lot of commands in
the file that don't seem to do anything or even throw errors. I'm
afraid that I can't debug the code you sent, partly because I don't
really know what you are attempting to display.

Jim


On Thu, Feb 2, 2017 at 10:35 AM, Kwesi Quagraine <starskykwesi at gmail.com> wrote:
> Hello Jim, Yes the idea is brilliant. I have been able to manipulate the
> barplot with "margin"  to get the plot in a better shape but now the y-axis
> is out of the plot zone. I have attached my script. Kindly have a look. Its
> with the data I earlier sent.
>
>
>
> On Thu, Feb 2, 2017 at 1:08 AM, Jim Lemon <drjimlemon at gmail.com> wrote:
>>
>> Hi Kwesi,
>> It looks to me as though you have plotted the output of your data.
>> What you have used to plot it is a mystery. Maybe a stacked barplot
>> with horizontal=TRUE? I don't suppose that the matrix of input values
>> is available. Let's see, you have 20 rectangles in each bar and 36
>> bars. Suppose we have a matrix like this:
>>
>> kqmat<-
>>  matrix(sin(seq(pi/10,72*pi,pi/10))+rnorm(720,0,0.1),
>>  ncol=20,byrow=TRUE)
>> library(plotrix)
>> color2D.matplot(kqmat,axes=FALSE,xlab="Rolling quarter",ylab="Year",
>>  cellcolors=matrix(color.scale(kqmat,c(1,0,0),c(0,1,0),c(0,0,1)),nrow=20))
>> axis(2,at=1:36,labels=2015:1980,las=1)
>>
>> This is a "plot in the dark", but it may enlighten.
>>
>> Jim
>>
>>
>> On Thu, Feb 2, 2017 at 5:26 AM, Kwesi Quagraine <starskykwesi at gmail.com>
>> wrote:
>> > Hello Jim, Hello everyone, does anyone know why this is happening? Any
>> > suggestions what might be causing it? I will be grateful for any help.
>> >
>> > Kwesi
>> >
>> > On Wed, Feb 1, 2017 at 1:12 AM, Jim Lemon <drjimlemon at gmail.com> wrote:
>> >>
>> >> Hi Kwesi,
>> >> I worked through your code below, and I think that when you have the
>> >> two variables "mon.t1" and "seas.t1" you can select a "rolling
>> >> quarter" like this:
>> >>
>> >> # the file name in your example is different from the one you sent
>> >> era<-read.table(file="SAfr_700hpa_7x5II.txt",header=FALSE,sep=" ",
>> >>  skip=1,dec = ".")
>> >> era.nodes<-paste(era[,1],era[,2],sep=".")
>> >> era.nodes<-as.numeric(era.nodes)
>> >> era.nodes.days<-zooreg(era.nodes,start=as.Date("1980-01-01"),
>> >>  end=as.Date("2016-12-31"))
>> >> era.nodes.days.t1<-window(era.nodes.days,start=as.Date("1980-01-01"),
>> >>  end=as.Date("2016-12-31"))
>> >> mon.t1<-as.numeric(format(index(era.nodes.days.t1),"%m"))
>> >> addyear<-0
>> >> # this loop transforms mon.t1 into an increasing sequence of months
>> >> for(i in 2:length(mon.t1)) {
>> >>  if(seas.t1[i] > seas.t1[i-1]) addyear<-addyear+12
>> >>  mon.t1[i]<-mon.t1[i] + addyear
>> >> }
>> >> for(i in 1:(max(mon.t1)-2)) {
>> >>  # this gives a logical index for the rolling quarter
>> >>  rq<-mon.t1 %in% i:(i+2)
>> >> }
>> >>
>> >> Each successive "rq" produced by the last loop can be used to extract
>> >> whatever values you want from "era" or "era.nodes".
>> >>
>> >> Jim
>> >>
>> >>
>> >> On Tue, Jan 31, 2017 at 9:04 PM, Kwesi Quagraine
>> >> <starskykwesi at gmail.com>
>> >> wrote:
>> >> > Hello Jim, thanks for the code. But I come to you once again, I am
>> >> > not
>> >> > looking to do a rolling mean, but to select JFM,FMA,MAM etc from the
>> >> > data
>> >> > attached. Below is my sample code which actually selects these
>> >> > months. I
>> >> > will rather be glad if I can have a function that does the selection
>> >> > for
>> >> > all
>> >> > these 3 months selected for each year as shown in my last two lines
>> >> > of
>> >> > code;
>> >> > Taking into accounts years with 29 days in February etc.
>> >> >
>> >> > rm(list = ls())
>> >> > library(zoo)
>> >> > library(PCICt)
>> >> > library(lattice)
>> >> > library(RColorBrewer)
>> >> >
>> >> > setwd('/home/kwesi/Documents/700hpa/soms/')
>> >> > # Reading the data
>> >> >
>> >> > era       <- read.table(file="SAfr_700hpa_5x4II.txt",header = FALSE,
>> >> > sep
>> >> > =
>> >> > "",skip=1,dec = ".")
>> >> > era.nodes      <- paste(era[,1],era[,2],sep=".")
>> >> >
>> >> > era.nodes      <-as.numeric(era.nodes)
>> >> >
>> >> >
>> >> > era.nodes.days<-zooreg(era.nodes,start=as.Date("1980-01-01"),end=as.Date("2016-12-31"))
>> >> >
>> >> >
>> >> >
>> >> > era.nodes.days.t1<-window(era.nodes.days,start=as.Date("1980-01-01"),end=as.Date("2016-12-31"))
>> >> >
>> >> > mon.t1<-as.numeric(format(index(era.nodes.days.t1),"%m"))
>> >> > seas.t1 <-as.numeric(format(index(era.nodes.days.t1),"%Y"))
>> >> > era.nodes.days.t1<-cbind(era.nodes.days.t1,mon.t1,seas.t1)
>> >> > era.nodes.days.t1
>> >> >
>> >> >
>> >> > jfm80<-era.nodes.days.t1[1:91,1:3[era.nodes.days.t1[1:91,2]==1|era.nodes.days.t1[1:91,2]==2|era.nodes.days.t1[1:91,2]==3]
>> >> > fma80<-era.nodes.days.t1[32:(91+30),1:3
>> >> >
>> >> >
>> >> > [era.nodes.days.t1[1:91,2]==2|era.nodes.days.t1[1:91,2]==3|era.nodes.days.t1[1:91,2]==4]
>> >> >
>> >> > On Tue, Jan 31, 2017 at 5:23 AM, Jim Lemon <drjimlemon at gmail.com>
>> >> > wrote:
>> >> >>
>> >> >> Hi Kwesi,
>> >> >> A mistake in the last email. Don't try to replace the column in
>> >> >> era.sta as the result will be a different length. Try this:
>> >> >>
>> >> >> newera.sta2<-collapse.values(era.sta[,2],3)
>> >> >>
>> >> >> Jim
>> >> >>
>> >> >> On Tue, Jan 31, 2017 at 10:32 AM, Jim Lemon <drjimlemon at gmail.com>
>> >> >> wrote:
>> >> >> > Hi Kwesi,
>> >> >> > The function collapse_values will only work on a vector of numbers
>> >> >> > with FUN="mean". era.sta looks like a data frame with at least two
>> >> >> > elements. As the second of these elements seems to be numeric,
>> >> >> > perhaps
>> >> >> > this will work:
>> >> >> >
>> >> >> > era.sta[,2]<-collapse.values(era.sta[,2],3)
>> >> >> >
>> >> >> > Don't try to apply the names to era.sta, that was just something
>> >> >> > to
>> >> >> > make the example easier to understand. If you want to collapse
>> >> >> > more
>> >> >> > than one column of era.sta do each one at a time and assign them
>> >> >> > to a
>> >> >> > new data frame. In particular, if era[,1] is a vector of month
>> >> >> > names,
>> >> >> > you will have to create a new vector of quarter (three month)
>> >> >> > names.
>> >> >> > If there are very many of these, the collapse_values function can
>> >> >> > be
>> >> >> > modified to do it automatically.
>> >> >> >
>> >> >> > Jim
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >> > On Tue, Jan 31, 2017 at 9:50 AM, Kwesi Quagraine
>> >> >> > <starskykwesi at gmail.com> wrote:
>> >> >> >> Hello Jim,this is my script now; I am having this error when I
>> >> >> >> called
>> >> >> >> the
>> >> >> >> function;" In mean.default(list(era...1. = 1:444, Node_freq =
>> >> >> >> c(-0.389855332400718,  :  argument is not numeric or logical:
>> >> >> >> returning
>> >> >> >> NA"
>> >> >> >> Any help will be much appreciated.
>> >> >> >>
>> >> >> >> Kwesi
>> >> >> >>
>> >> >> >> rm(list = ls())
>> >> >> >> setwd('/home/kwesi/Documents/700hpa/soms/')
>> >> >> >> # Reading the data
>> >> >> >>
>> >> >> >> era       <- read.csv(file="som_freq.csv",header = TRUE, sep =
>> >> >> >> ",",dec
>> >> >> >> =
>> >> >> >> ".")
>> >> >> >> era.scaled <- scale(era[,2:3], center = TRUE, scale = TRUE)
>> >> >> >> era.sta<-data.frame(era[,1],era.scaled)
>> >> >> >> era.sta
>> >> >> >>
>> >> >> >> collapse_values<-function(x,span,FUN="mean",na.rm=FALSE) {
>> >> >> >>   jump<-span-1
>> >> >> >>   newx<-rep(NA,length(x)-jump)
>> >> >> >>   for(i in 1:length(newx))
>> >> >> >>     newx[i]<-do.call(FUN,list(x[i:(i+jump)],na.rm=na.rm))
>> >> >> >>   return(newx)
>> >> >> >> }
>> >> >> >>
>> >> >> >> #test<-1:12
>> >> >> >> names(era.sta)<-month.abb
>> >> >> >> collapse_values(era.sta,3)
>> >> >> >> era.sta
>> >> >> >>
>> >> >> >>
>> >> >> >> On Mon, Jan 30, 2017 at 11:53 PM, Jim Lemon
>> >> >> >> <drjimlemon at gmail.com>
>> >> >> >> wrote:
>> >> >> >>>
>> >> >> >>> Hi Kwesi,
>> >> >> >>> Even without the data, it seems clear that you want something
>> >> >> >>> like
>> >> >> >>> a
>> >> >> >>> rolling mean. Here is a simple function that will apply a
>> >> >> >>> function
>> >> >> >>> like "mean" to successive bits of a vector of numbers:
>> >> >> >>>
>> >> >> >>> collapse_values<-function(x,span,FUN="mean",na.rm=FALSE) {
>> >> >> >>>  jump<-span-1
>> >> >> >>>  newx<-rep(NA,length(x)-jump)
>> >> >> >>>  for(i in 1:length(newx))
>> >> >> >>>   newx[i]<-do.call(FUN,list(x[i:(i+jump)],na.rm=na.rm))
>> >> >> >>>  return(newx)
>> >> >> >>> }
>> >> >> >>>
>> >> >> >>> test<-1:12
>> >> >> >>> names(test)<-month.abb
>> >> >> >>> test
>> >> >> >>> collapse_values(test,3)
>> >> >> >>>  [1]  2  3  4  5  6  7  8  9 10 11
>> >> >> >>>
>> >> >> >>> Jim
>> >> >> >>>
>> >> >> >>>
>> >> >> >>>
>> >> >> >>> On Mon, Jan 30, 2017 at 11:53 PM, Kwesi Quagraine
>> >> >> >>> <starskykwesi at gmail.com> wrote:
>> >> >> >>> > Hello, I have a data with two variables nodes and index, I
>> >> >> >>> > want
>> >> >> >>> > to
>> >> >> >>> > extract
>> >> >> >>> > 3 months seasons, with a shift of 1 month, that is, DJF, JFM,
>> >> >> >>> > FMA
>> >> >> >>> > etc to
>> >> >> >>> > OND. Was wondering how to go about it. Kindly find attached
>> >> >> >>> > the
>> >> >> >>> > data
>> >> >> >>> > as
>> >> >> >>> > csv.
>> >> >> >>> > Any help will be appreciated.
>> >> >> >>> >
>> >> >> >>> > Regards,
>> >> >> >>> > Kwesi
>> >> >> >>> >
>> >> >> >>> > --
>> >> >> >>> > Try not to become a man of success but rather a man of
>> >> >> >>> > value-Albert
>> >> >> >>> > Einstein
>> >> >> >>> >
>> >> >> >>> > University of Cape Coast|College of Agriculture and Natural
>> >> >> >>> > Sciences|Department
>> >> >> >>> > of Physics|
>> >> >> >>> > Team Leader|Recycle Up! Ghana|Technology Without Borders|
>> >> >> >>> > Other emails:
>> >> >> >>> > kwesi.quagraine at ucc.edu.gh|kwesi.quagraine at teog.de|
>> >> >> >>> > Mobile: +233266173582
>> >> >> >>> > Skype: quagraine_cwasi
>> >> >> >>> > Twitter: @Pkdilly
>> >> >> >>> > ______________________________________________
>> >> >> >>> > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more,
>> >> >> >>> > see
>> >> >> >>> > 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.
>> >> >> >>
>> >> >> >>
>> >> >> >>
>> >> >> >>
>> >> >> >> --
>> >> >> >> Try not to become a man of success but rather a man of
>> >> >> >> value-Albert
>> >> >> >> Einstein
>> >> >> >>
>> >> >> >> University of Cape Coast|College of Agriculture and Natural
>> >> >> >> Sciences|Department of Physics|
>> >> >> >> Team Leader|Recycle Up! Ghana|Technology Without Borders|
>> >> >> >> Other emails: kwesi.quagraine at ucc.edu.gh|kwesi.quagraine at teog.de|
>> >> >> >> Mobile: +233266173582
>> >> >> >> Skype: quagraine_cwasi
>> >> >> >> Twitter: @Pkdilly
>> >> >> >>
>> >> >
>> >> >
>> >> >
>> >> >
>> >> > --
>> >> > Try not to become a man of success but rather a man of value-Albert
>> >> > Einstein
>> >> >
>> >> > University of Cape Coast|College of Agriculture and Natural
>> >> > Sciences|Department of Physics|
>> >> > Team Leader|Recycle Up! Ghana|Technology Without Borders|
>> >> > Other emails: kwesi.quagraine at ucc.edu.gh|kwesi.quagraine at teog.de|
>> >> > Mobile: +233266173582
>> >> > Skype: quagraine_cwasi
>> >> > Twitter: @Pkdilly
>> >> >
>> >
>> >
>> >
>> >
>> > --
>> > Try not to become a man of success but rather a man of value-Albert
>> > Einstein
>> >
>> > University of Cape Coast|College of Agriculture and Natural
>> > Sciences|Department of Physics|
>> > Team Leader|Recycle Up! Ghana|Technology Without Borders|
>> > Other emails: kwesi.quagraine at ucc.edu.gh|kwesi.quagraine at teog.de|
>> > Mobile: +233266173582
>> > Skype: quagraine_cwasi
>> > Twitter: @Pkdilly
>> >
>
>
>
>
> --
> Try not to become a man of success but rather a man of value-Albert Einstein
>
> University of Cape Coast|College of Agriculture and Natural
> Sciences|Department of Physics|
> Team Leader|Recycle Up! Ghana|Technology Without Borders|
> Other emails: kwesi.quagraine at ucc.edu.gh|kwesi.quagraine at teog.de|
> Mobile: +233266173582
> Skype: quagraine_cwasi
> Twitter: @Pkdilly
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: kq.png
Type: image/png
Size: 4191 bytes
Desc: not available
URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20170202/126711dd/attachment.png>


More information about the R-help mailing list