全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
4467 8
2016-11-15
悬赏 200 个论坛币 已解决
以下表举例,如何删除简称中包含“银行”的整行数据

代码

简称

日期

a

b

c

000001.SZ

平安银行

2016-04-20

914.977

913.2572

943.3551

000002.SZ

万科A

2016-04-20

3113.542

3113.542

3113.542

000004.SZ

国农科技

2016-04-20

149.672

149.672

149.672

000005.SZ

世纪星源

2016-04-20

71.0825

70.9898

76.7357

000006.SZ

深振业A

2016-04-20

265.617

264.3369

280.0179

000007.SZ

中国银行

2016-04-20

131.3492

131.3492

131.3492

000008.SZ

神州高铁

2016-04-20

238.0462

236.9452

243.5514

000009.SZ

中国宝安

2016-04-20

74.0869

73.6552

83.314

000010.SZ

深华新

2016-04-20

89.752

89.9675

96.2167

000011.SZ

招商银行

2016-04-20

47.6965

47.4618

52.1544

000012.SZ

南玻A

2016-04-20

186.3025

186.3025

203.7684


删除后变为


代码简称日期abc
000002.SZ万科A2016/4/203113.5423113.5423113.542
000004.SZ国农科技2016/4/20149.672149.672149.672
000005.SZ世纪星源2016/4/2071.082570.989876.7357
000006.SZ深振业A2016/4/20265.617264.3369280.0179
000008.SZ神州高铁2016/4/20238.0462236.9452243.5514
000009.SZ中国宝安2016/4/2074.086973.655283.314
000010.SZ深华新2016/4/2089.75289.967596.2167
000012.SZ南玻A2016/4/20186.3025186.3025203.7684

我已经用循环可以实现上述功能因为原数据行数非常庞大(有百万行),逐行循环过慢,有没有不用for循环语句的方法?

最佳答案

evare3 查看完整内容

实现方法为,dat = dat(cellfun('isempty',strfind(dat{:,2},'银行')),:);亲测有效,自己解决问题,也没有人给出有效回答,所以悬赏回收。
二维码

扫码加我 拉你入群

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

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

全部回复
2016-11-15 22:53:31
实现方法为,dat = dat(cellfun('isempty',strfind(dat{:,2},'银行')),:);亲测有效,自己解决问题,也没有人给出有效回答,所以悬赏回收。
二维码

扫码加我 拉你入群

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

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

2016-11-16 18:43:39
匹配字符串,用strcmp类似的匹配函数可以,之前整理过一些,你可以看下http://blog.sina.com.cn/s/blog_a595d5850102x2s3.html
二维码

扫码加我 拉你入群

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

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

2016-11-20 11:18:29
lixuewei3 发表于 2016-11-16 18:43
匹配字符串,用strcmp类似的匹配函数可以,之前整理过一些,你可以看下http://blog.sina.com.cn/s/blog_a59 ...
strcmp需要完全匹配,我这个需要包含某个字符即删除,不知道有什么不用循环的办法可以达到上面的要求吗?
二维码

扫码加我 拉你入群

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

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

2016-11-21 08:47:54
n=size(dat);
len=n(1,1);
for i=len:-1:1
    flag=strfind(dat{i,2},'银行');
    m=size(flag);
    m=m(1,1);
    if(m~=0)
        dat(i,:)=[];
    end
end

这是用循环的实现方法
二维码

扫码加我 拉你入群

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

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

2016-11-21 08:52:22
stata里面一个 drop if regexm(var2,"银行")==1 一个命令就可以迅速解决的功能,matlab应该也有类似的做法吧,不然每次做一个剔除都要几十分钟也太不方便了
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群