【问题标题】:how to solve this error: attempt to set 'rownames' on an object with no dimensions如何解决此错误:尝试在没有维度的对象上设置“行名”
【发布时间】:2016-09-21 02:29:00
【问题描述】:

我有一个包含每日流量的 csv 文件。我需要将每日值合并为每月。我正在尝试使用“hydroTSM”包的“daily2monthly”功能。 来自 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&lt;-(*tmp*, value = c("Oct-1959", "Nov-1959", "Dec-1959", : 尝试在没有 尺寸

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

【问题讨论】:

  • 在您的问题中添加dput(df),以便我们重现您的错误并实际提供帮助,而不是推测

标签: r hydrotsm


【解决方案1】:

首先尝试将您的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 

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

df$station_3 <- sample(1:1000, nrow(df))
daily2monthly(df, FUN=sum, dates=1)
#           flow_2 station_3
# Oct-1959 31440.0    132423
# Nov-1959   411.9    149305
# Dec-1959  1199.3    157622
# Jan-1960  4373.0    176413
# Feb-1960  1466.0    143373
# Mar-1960  1904.0    166102
# Apr-1960   741.0    141861

【讨论】:

  • 我明白了。我确实尝试过动物园格式,它奏效了。但由于我需要对其进行进一步分析,我更喜欢数据框。无论如何,谢谢。
  • 不客气。您可能已经想到了这一点,但是您可以将输出从 daily2monthly(z, FUN=sum, dates=1) 转换回数据帧,或者在数据帧中插入一个占位符列并在运行 daily2monthly 后将其删除。如果答案解决了您的问题,请将其标记为已接受。
猜你喜欢
  • 1970-01-01
  • 2016-05-02
  • 2019-08-11
  • 2022-11-10
  • 2021-08-20
  • 1970-01-01
  • 1970-01-01
  • 2015-05-09
  • 1970-01-01
相关资源
最近更新 更多