我使用下面的代码来获取每年的累积降雨量并将它们绘制为每年的行数,但是当我从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
答案 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