[R] Challenge extracting months

Jim Lemon drjimlemon at gmail.com
Tue Jan 31 00:32:33 CET 2017


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
>



More information about the R-help mailing list