如何解决这个错误:尝试设置' rownames'在没有尺寸的物体上

时间:2016-09-21 02:29:00

标签: r hydrotsm

我有一个带有每日流量的csv文件。我需要将每日价值结合到每月。我正在尝试使用" daily2monthly"的功能" hydroTSM"包。 来自BRPT2.csv的样本数据:

_date,_time,_value,_flag
 10/2/1959,0:00:00,0,2
 10/3/1959,0:00:00,0,2
 10/4/1959,0:00:00,1540,2
 10/5/1959,0:00:00,16100,2
 10/6/1959,0:00:00,6680,2
 10/7/1959,0:00:00,3100,2
 10/8/1959,0:00:00,2060,2

我使用了以下命令:

qme<- read.csv(file = "BRPT2.csv",header = T,sep = ",") #read in csv file
date<- as.Date(qme$X_date,format("%Y-%m-%d")) #convert date column to date format from factor
flow<- qme[,3]
flow_2<-replace(flow,flow==-999,0) #replace the missing values (-999) with 0
df<- data.frame()
df<- rbind(df,data.frame(date,flow_2,stringsAsFactors = FALSE))
daily2monthly(df,FUN=sum,dates=1)

它会出现以下错误消息:

  

rownames<-中的错误(*tmp*,值= c(&#34; 1959年10月&#34;,&#34; 1959年11月和#34;,   &#34; 1959年12月&#34 ;,:尝试设置&#39; rownames&#39;在一个没有的对象上   尺寸

有人可以帮我解决这个问题。提前谢谢。

1 个答案:

答案 0 :(得分:4)

首先尝试将df转换为zoo对象:

z <- zoo(df[, -1], df[, 1])
daily2monthly(z, FUN=sum, dates=1)
# 1959-10-01 1959-11-01 1959-12-01 1960-01-01 1960-02-01 1960-03-01 1960-04-01 
#    31440.0      411.9     1199.3     4373.0     1466.0     1904.0      741.0 

data.frame的{​​{1}}方法仅在您拥有多列数据时才有效;在您的情况下,您只有一个,这就是函数返回该错误消息的原因。假设我们还有一列数据:

daily2monthly