#COLLATION FUNCTIONS
reader.info=function(url){
fred=readLines(url)
fred=fred[substr(fred,1,13)=="
"]
n=nchar(fred)
fred=substr(fred,14,n)
#id=as.numeric(substr(fred,1,5));
#n=nchar(fred)
#fred=substr(fred,15,n)
n=nchar(fred)
temp=(substr(fred,n-4,n)==" | ")
fred[temp]=substr(fred[temp],1,n[temp]-5)
fred=strsplit(fred,"")
fred=t(sapply(fred,rbind))
fred=data.frame(fred)
names(fred)=c("id","name","lat","long")
for(i in 1:4) fred[,i]=as.character(fred[,i])
fred$id=as.numeric(fred$id)
n=nchar(fred$lat)
fred$lat= -as.numeric( substr(fred$lat,1,n-1))
n=nchar(fred$long)
temp=substr(fred$long,n,n)=="E"
fred$long[temp]=substr(fred$long[temp],1,n[temp]-1)
fred$long=as.numeric(fred$long)
fred$long[!temp]= - fred$long[!temp]
reader.info=fred
reader.info
}
si_table2f=function() {
info=read.table("http://www.climateaudit.info/data/antarctic_mann/si_table2.dat")
dim(info) #46 6
temp= info== -999; info[temp]=NA
names(info)=c("name","lat","long","r","RE","CE")
info$name=as.character(info$name);n=nchar(info$name)
info$subset=NA
temp= substr(info$name,n,n)=="*"
info$subset[temp]=TRUE
info$name[temp]=substr(info$name[temp],1,n[temp]-1)
info$lat= -info$lat
temp= info$long>180
info$long[temp]= -( 360- info$long[temp])
test=match(info$name,Info$surface$name);temp=!is.na(test);sum(temp) #40
info$id=NA
info$id[temp]=Info$surface$id[test[temp]]
info[is.na(info$id),]
# name lat long RE CE r2 subset id
#15 Faraday 65.4 295.6 NA NA NA TRUE NA #89063
#40 Terra_Nova_Bay 74.7 164.1 0.60 0.33 0.33 NA NA #89662 Mario_Zucchelli
#43 Mt_Siple_AWS 73.2 232.9 0.58 0.31 0.31 NA NA
#44 Siple_AWS 75.9 276.0 0.70 0.44 0.44 NA NA
#45 Byrd_AWS 80.0 240.0 0.64 0.39 0.39 NA NA
#46 Harry_AWS 73.2 232.9 0.54 0.27 0.27 NA NA
info$id[c(15,40)]=c(89063,89662) #by inspection ALL are identified
si_table2f=info
si_table2f
}
si_table1f=function() {
info=read.table("http://www.climateaudit.info/data/antarctic_mann/si_table1.dat",header=TRUE)
#info=read.table("d:/climate/data/mann_antarc/si_table1.dat",header=TRUE)
dim(info) #26 7
temp= info== -999; info[temp]=NA
info$name=as.character(info$name);n=nchar(info$name)
info$lat= -info$lat
temp= info$long>180
info$long[temp]= -( 360- info$long[temp])
test=match(info$name,Info$aws$name);temp=!is.na(test);sum(temp) #40
info$id=NA
info$id[temp]=Info$aws$id[test[temp]]
info[is.na(info$id),]
# name lat long r RE CE trend id
#6 D10 -66.7 139.8 0.58 0.37 0.27 0.06 NA
#9 Ferrel -77.9 170.8 0.88 0.77 0.75 0.25 NA
#12 LGB120 -73.8 55.7 0.80 0.62 0.62 0.06 NA
#18 Marily -80.0 165.1 0.77 0.59 0.57 0.26 NA
#21 Pegaus_South -78.0 166.6 0.84 0.70 0.69 0.26 NA
#25 Tourm._Plateau -74.1 163.4 0.62 0.09 0.15 0.08 NA
info$id[c(6,9,12,18,21,25)]=c(89832,89872,89757,89868,8937,7356)
#all match: stupid spelling errors in Mann SI
si_table1f=info
si_table1f
}
chronf=function(id) {
#id="aws"
info=Info[[paste(id)]]
chron=NULL
for (i in 1:nrow(info)) {
loc=paste("http://www.antarctica.ac.uk/met/READER/",id,"/",info$name[i],".All.temperature.txt",sep="")
test=try(read.table(loc,skip=1,na.strings="-"))
if(! (class(test)=="try-error") )test=ts( c(t(test[,2:13])),start=test[1,1],freq=12) else test= ts(rep(NA,12),start=c(2000,1),freq=12)
chron=ts.union(chron,test)
}
dimnames(chron)[[2]]=info$id
#count=ts( apply(!is.na(chron),1,sum),start=c(tsp(chron)[1],1),freq=12)
count=apply(!is.na(chron),2,sum) # 3 are zero
chronf=chron[,count>0]
chronf
}
|
---|