我今天看不到矩阵....
有什么更好的方法来获得这个结果......
date_bom pmsector1 recommendation sec_returns
<dttm> <fctr> <fctr> <dbl>
1 2005-01-01 Apartment HB SPREAD 0.1168
4 2005-01-01 Apartment LB SPREAD -.40174
从这个输入数据(df)
date_bom pmsector1 recommendation sec_returns
<dttm> <fctr> <fctr> <dbl>
1 2005-01-01 Apartment HB BUY -0.98328013
2 2005-01-01 Apartment HB HOLD 0.39360700
3 2005-01-01 Apartment HB SELL -1.10071321
4 2005-01-01 Apartment LB BUY -0.07363028
5 2005-01-01 Apartment LB HOLD 0.02747529
6 2005-01-01 Apartment LB SELL 0.32811229
这就是有效的方法,但它必须以一种更好、更少循环的方式成为可能。
dates<-unique(df$date_bom)
new = data.frame(date_bom=as.Date(character()),pmsector1=character(),recommenation=character(),spread=double())
for (date in seq(0:length(dates))){
for(sector in unique(df$pmsector1)){
buy <-df[which(df$pmsector1==sector & df$date_bom==dates[date] & df$recommendation=="BUY"),4]
sell<-df[which(df$pmsector1==sector & df$date_bom==dates[date] & df$recommendation=="SELL"),4]
update<-data.frame(list(dates[date], sector, "SPREAD", as.numeric(as.numeric(buy)-as.numeric(sell))))
names(update)<-c("date_bom","pmsector1","recommendation","sec_returns")
new<-rbind(new,update)
}
}