新手到R并遇到了一个问题。我从HUD中拉出excel表格并构建了一个功能,可以对纸张进行一系列操作。然而,他们从2012年开始更改FIPS列的名称。所以我只想说
if(2013-2015) {do this}
else if(2009-2012) {do this other thing}
对我来说有什么问题,这对于2013-2015来说完全没问题,但是当它击中&#34时会收到错误消息;否则如果" 2012年的部分。 我的代码如下:
library(gdata)#requires latest version of perl be downloaded
library(dplyr)
r<-function(ws,y){
library(dplyr)
df<-read.xls(ws)
if(y==2015||2014||2013){
df$fips2010<-gsub(99999,"",df$fips2010)
df<-df[nchar(df$fips2010)<=5,]
#adding a zero in front of all FIPS obs. with 4 characters
df[nchar(df[,1])==4,1] <- paste("0", df[nchar(df[,1])==4,1], sep="")
df<-mutate(df,Year=y)
#filtering out puerto rico
df<-df[-grep("^72",df$fips2010),]
df$Year_FIPS<-paste(df$Year,df$fips2010,sep="_")
df<-select(df,Year_FIPS,cty_hud=countyname,st_hud=state_alpha,"3bdr_hud"=fmr3)
return(df)
} else if (y==2012||2011||2010||2009){
df$FIPS<-gsub(99999,"",df$FIPS)
df<-df[nchar(df$FIPS)<=5,]
#adding a zero in front of all FIPS obs. with 4 characters
df[nchar(df[,1])==4,1] <- paste("0", df[nchar(df[,1])==4,1], sep="")
df<-mutate(df,Year=y)
#filtering out puerto rico
df<-df[-grep("^72",df$FIPS),]
df$Year_FIPS<-paste(df$Year,df$FIPS,sep="_")
df<-select(df,Year_FIPS,cty_hud=countyname,st_hud=state_alpha,"3bdr_hud"=fmr3)
return(df)
}
}
r13<-r(ws = "http://www.huduser.org/portal/datasets/fmr/fmr2013f/FY2013_4050_Final.xls",
y="2013")
r12<-r(ws = "http://www.huduser.org/portal/datasets/fmr/fmr2012f/FY2012_4050_Final.xls",
y="2012")
答案 0 :(得分:1)
代码中的错误似乎是(正如@nicola在评论中指出的那样)y==2015||2014||2013
始终为真。大概是(也在评论中验证)检查成员资格,例如
y %in% c(2015,2014,2013)