R:如何将行和列的每日时间序列安排为单个列?

R:如何将行和列的每日时间序列安排为单个列?,r,time,time-series,organization,R,Time,Time Series,Organization,我有一个数据集,一个每日时间序列,我想排列成一列,这是我的数据: Date Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 .... Day 31 01/01/1964 0 0 0 0 0 0 3 01/02/1964 NA NA NA NA NA NA ... 01/0

我有一个数据集,一个每日时间序列,我想排列成一列,这是我的数据:

Date       Day 1    Day 2   Day 3   Day 4   Day 5   Day 6 .... Day 31
01/01/1964  0         0       0       0       0       0         3
01/02/1964  NA       NA      NA       NA      NA      NA ...                
01/03/1964  195      445    329      121     61,6     44 ...
01/04/1964  17,2    14,9    17,1     102     54,3    9,33 ...
我想要这个:

 Day1  0
 Day2  0
       .
       .
       .
 Day31 3
我有问题,因为闰年有366天,我尝试了这个,但没有成功,在先进的感谢

编辑:

我终于得到了它,但如果有人知道更简单的方法,使用一些包或函数,我很感激。或者我将创建自己的函数。

rm(list = ls())
cat("\014")


setwd("C:/")

require(XLConnect)

# Load Streamflow Gauging Station

wb <- loadWorkbook("rainfall.xls")
Data<- readWorksheet(wb, sheet = "rainfall",header = FALSE,region = "B02:AF517")

R<- Data; ##1964 - 2006

sum(R[is.na(R)==FALSE])

# Number of days in each month

Ny<- c(31,28,31,30,31,30,31,31,30,31,30,31); # Normal Year
Ly<- c(31,29,31,30,31,30,31,31,30,31,30,31); # Leap/bissextile Year

S1<- c(1,0,0,0) # Leap year, normal year...
S2<- c(0,1,0,0) # Normal year, leap year...
S3<- c(0,0,1,0) #...
S4<- c(0,0,0,1) #...

Iab<- rep(S1,times=ceiling((nrow(R)/12)/4)); # Index of years
Iab<- Iab[1:(nrow(R)/12)];
Rnew<- matrix(numeric(0), 0,0);


#Organize data in a only collumn

for(i in 1:(nrow(R)/12)){
  for(j in 1:12){
    if(Iab[i]==0){
      Rnew<-c(Rnew, t(R[12*(i-1)+j,1:Ny[j]]))
    }else{
      Rnew<-c(Rnew, t(R[12*(i-1)+j,1:Ly[j]]))
    }
  }
}

sum(R[is.na(R)==FALSE])==sum(Rnew[is.na(Rnew)==FALSE]) #Test for succes of organize
sum(R[is.na(R)==FALSE])
sum(Rnew[is.na(Rnew)==FALSE])
编辑2:

现在我有一个问题,在一年的第一个月我没有开始工作。

rm(list = ls())
cat("\014")


setwd("C:/")

require(XLConnect)

# Load Streamflow Gauging Station

wb <- loadWorkbook("rainfall.xls")
Data<- readWorksheet(wb, sheet = "rainfall",header = FALSE,region = "B02:AF517")

R<- Data; ##1964 - 2006

sum(R[is.na(R)==FALSE])

# Number of days in each month

Ny<- c(31,28,31,30,31,30,31,31,30,31,30,31); # Normal Year
Ly<- c(31,29,31,30,31,30,31,31,30,31,30,31); # Leap/bissextile Year

S1<- c(1,0,0,0) # Leap year, normal year...
S2<- c(0,1,0,0) # Normal year, leap year...
S3<- c(0,0,1,0) #...
S4<- c(0,0,0,1) #...

Iab<- rep(S1,times=ceiling((nrow(R)/12)/4)); # Index of years
Iab<- Iab[1:(nrow(R)/12)];
Rnew<- matrix(numeric(0), 0,0);


#Organize data in a only collumn

for(i in 1:(nrow(R)/12)){
  for(j in 1:12){
    if(Iab[i]==0){
      Rnew<-c(Rnew, t(R[12*(i-1)+j,1:Ny[j]]))
    }else{
      Rnew<-c(Rnew, t(R[12*(i-1)+j,1:Ly[j]]))
    }
  }
}

sum(R[is.na(R)==FALSE])==sum(Rnew[is.na(Rnew)==FALSE]) #Test for succes of organize
sum(R[is.na(R)==FALSE])
sum(Rnew[is.na(Rnew)==FALSE])
rm(list=ls())
类别(“\014”)
setwd(“C:/”)
需要(XLConnect)
#负荷流量测量站

wb也许我很难准确地理解你在寻找什么,但你是否在尝试转换数据

t(data)

我也有类似的问题。然而,更糟糕的是,因为我有流量数据(巴西利亚全日空站),有几个月和几年的中断。Vazao01代表当月第一天的流量,Vazao02代表第二天的流量,数据帧上升至Vazao31(天数较少的月份明显为NA,但也可以是现有天数的NA,无记录)。数据如下所示,即data.frame“ANAday”

我列出了一个月的数据清单

ANAm=as.Date(ANAday[,1], format="%d.%m.%Y")
format(ANAm, format="%Y-%m")
然后我使用Hmisc包的“monthDays”功能列出每个月的天数

require(Hmisc)
nodm=monthDays(ANAm)
Nodm=cbind.data.frame(ANAm,nodm)
for(i in 1:nrow(Nodm)){
selectANA=as.vector(ANAd[i,1:(Nodm[i,2]) ])
selectANA=as.vector(t(selectANA))##to generate a simple vector
dayANA=c(1:(Nodm[i,2]))
monthANA=rep(format(as.Date(Nodm[i,1]),format="%Y-%m"),times=as.numeric(Nodm[i,2]))
ANAts=cbind(monthANA,dayANA,auswahlANA)
ANATS<<-rbind(ANATS,ANAts)
}
我为我想要的数据准备了一个data.frame,其中有3列分别是“年-月”、“日”和“出院”

并使用一个简单的“for”循环,根据每个月的天数将数据提取到一列中

require(Hmisc)
nodm=monthDays(ANAm)
Nodm=cbind.data.frame(ANAm,nodm)
for(i in 1:nrow(Nodm)){
selectANA=as.vector(ANAd[i,1:(Nodm[i,2]) ])
selectANA=as.vector(t(selectANA))##to generate a simple vector
dayANA=c(1:(Nodm[i,2]))
monthANA=rep(format(as.Date(Nodm[i,1]),format="%Y-%m"),times=as.numeric(Nodm[i,2]))
ANAts=cbind(monthANA,dayANA,auswahlANA)
ANATS<<-rbind(ANATS,ANAts)
}

不管用。我需要将每一行月份与31/31/28/29天进行转换,以形成一个单独的列,我有NA值,其中月份少于31天,并且缺少值。在每个循环中,需要知道要转置的向量长度、一个月的天数以及是闰年还是正常年份。嗨,Johanna!我来自巴西!我的问题还涉及ANA timeseries。你是巴西人吗?这个问题有点老了,8个月前,现在我找到了解决这个问题的方法,甚至创建了一个R包。但是,您的代码是有意义的,并且可以处理问题类型。