全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1143 1
2016-02-29

请教大神一个关于数据筛选的问题。clpr_allA是A股05年开始所有日线数据,compo_hs300是沪深300的成分股数据。 360截图20160229224929926.jpg 360截图20160229224918773.jpg

####筛选出沪深300日数据(事先加载好clpr_allAcompo_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),]是啥情况?直接运行就卡死了


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-3-1 10:19:24
which(..=="2005-12-30")是返回行号,然后用行号来对data.frame进行选取数据,没有问题的。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

分享

扫码加好友,拉您进群