请教大神一个关于数据筛选的问题。clpr_allA是A股05年开始所有日线数据,compo_hs300是沪深300的成分股数据。
####筛选出沪深300日数据(事先加载好clpr_allA和compo_hs300)####
compo<-unique(compo_hs300$wind_code) ##沪深300成分股
for(i in 1:length(compo))
{
compo<-as.character(paste(substr(compo,8,9),substr(compo,1,6),sep='') )##俩引号中没空格也行
}
clpr_hs300<-data.frame()
for(i in 1:length(compo))
{
temp<-clpr_allA[which(clpr_allA$InstrumentId==compo),]
if(nrow(temp)!=0) ##没有任何行的为退市股票
{
temp<-temp[which(temp$DATETIME=="2005-12-30"):length(temp$DATETIME),] ##选取2006年至2015年的数据
clpr_hs300<-rbind(clpr_hs300,temp[which(temp$CLOSE!='NaN'),]) ##去除没有上市的缺省数据
}
}
这段代码是别人给我的,不太明白其DATETIME的筛选原理。which(clpr_allA$DATETIME=="2005-12-30",返回了所有满足DATETIME=="2005-12-30"的行的序号,length(clpr_allA $DATETIME)返回了总行数,但这不成一对多了?一般说给定data frame A, int n,m(n<m) 则A[n:m,]返回了n到m行的数据,clpr_allA[which(clpr_allA$DATETIME=="2005-12-30"):length(clpr_allA $DATETIME),]是啥情况?直接运行就卡死了


雷达卡




京公网安备 11010802022788号







