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>
Hello Jim,this is my script now; I am having this error when I called
function;" In mean.default(list(era...1. = 1:444, Node_freq =
c(-0.389855332400718, : argument is not numeric or logical: returning
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>
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
OND. Was wondering how to go about it. Kindly find attached the data
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