在R中使用plyr尝试获得累积降雨时出错

时间:2014-04-02 04:04:16

标签: r plyr

我使用下面的代码来获取每年的累积降雨量并将它们绘制为每年的行数,但是当我从ddply包中运行plyr函数时出现以下错误。

错误:'姓名' attribute [9]的长度必须与vector [3]

的长度相同
library(plyr)

# Setting work directory

setwd("d:\\ClimData")

# Reading and reformatting raw data downloaded from NCDC

dat<-read.table("CDO2812586929956.txt",header=F,skip=1)

colnames(dat)<-c("stn","wban","yearmoda","temp","tempc","dewp","dewpc","slp","slpc","stp","stpc","visib","visibc","wdsp","wdspc","mxspd","gust","maxtemp","mintemp","prcp","sndp","frshtt")

dat$yearmoda <- strptime(dat$yearmoda,format="%Y%m%d")

dat$prcp <- as.character(dat$prcp)
dat$prcp1 <-as.numeric(substr(dat$prcp,1,4))
dat$prcpflag <- substr(dat$prcp,5,5)

dat$rain  <- dat$prcp1*25.4

dat$rain[dat$rain > 1000 ] <- NA

dat$year <- as.numeric(format(dat$yearmoda,"%Y"))
dat$month <- as.numeric(format(dat$yearmoda,"%m"))
dat$day <- as.numeric(format(dat$yearmoda,"%d"))

# Getting cumulative sum of rain/year

dat <- ddply (dat,.(year), transform, cumRainfall = cumsum (rain))

希望有人可以指出我哪里出错了。

输入文件位于以下链接。

https://dl.dropboxusercontent.com/u/81632971/CDO2812586929956.txt

2 个答案:

答案 0 :(得分:0)

我不知道这是否解决了您的问题,因为我目前无法运行您的最低工作示例,但如果您想尝试除plyr之外的其他内容,则doBy包提供了一个函数{{1 }}

summaryBy

从那里开始绘图应该是直截了当的。

答案 1 :(得分:0)

我真的不知道您的数据框有什么问题,因为如果我创建了一个新的数据框:

> dd = data.frame(year = as.factor(dat$year), rain = dat$rain)

ddply有效。我确信当数据框的POSIXlt / ct日期为列时,plyr存在一种错误,实际上如果删除yearmoda列错误消失...

更新它不是&#34;&#34;&#34;&#34;&#34;错误,这是一个真正的错误:https://github.com/hadley/plyr/issues/159