楼主: gongxuche1991
8293 2

[问答] 如何用matlab提取字符型变量名中的部分信息 [推广有奖]

  • 4关注
  • 1粉丝

已卖:1份资源

博士生

42%

还不是VIP/贵宾

-

威望
0
论坛币
126 个
通用积分
28.1778
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
1367 点
帖子
139
精华
0
在线时间
350 小时
注册时间
2012-10-21
最后登录
2022-9-20

楼主
gongxuche1991 在职认证  发表于 2013-10-19 00:41:11 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
请教各位坛友,matlab能不能实现提取变量名称的部分信息呢。
举例:中国银行 1000;中国人寿1000;苏州信贷公司1000;中石油1000。
对文字进行筛选并在其后加一个dummy,文字中含有“银行”“信贷”的项目令其为1。
就要变成:中国银行 1000  1;中国人寿1000  0;苏州信贷公司1000  1;中石油1000  0这样子的表格

还望不吝赐教,最好是写出具体的代码

二维码

扫码加我 拉你入群

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

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

关键词:MATLAB 字符型变量 matla atlab 如何用 中国银行 中国人寿 中石油 matlab 苏州

沙发
Xaero 发表于 2013-10-20 16:47:38
Matlab处理字符的能力呢,不能说不强,但确实够烦。最近我一直在和这类问题作斗争。简单分享一点吧:
首先确定,把字符搞成cell格式,然后再处理,下面是代码和Matlab的回显:
>> x0={'中国银行 1000','中国人寿1000','苏州信贷公司1000','中石油1000'}

x0 =

    '中国银行 1000'    '中国人寿1000'    '苏州信贷公司1000'    '中石油1000'

然后找文字,把有这些文字的位置标记出来。(写在一行了,如果你要研究,可以按照我的基础班里面讲的,逐个分析)
>> idx=cellfun(@(x)(~isempty(strfind(x,'银行'))|~isempty(strfind(x,'信贷'))),x0)

idx =

     1     0     1     0

最后吧这些dummy写到原来文字里面,由于idx里面已经有1了(实际是logical格式的1,但是用的时候可以当作普通数值型用)
>> x1=cellfun(@(x,y)(sprintf('%s %d',x,y)),x0,num2cell(idx),'UniformOutput',false)

x1 =

    '中国银行 1000 1'    '中国人寿1000 0'    '苏州信贷公司1000 1'    '中石油1000 0'

【总结】: 先搞成cell格式,然后用cellfun来批量处理。速度快,程序也短,但是要求cellfun等函数比较熟悉。多练习练习就OK啦。

十年一觉扬州梦。
智不足以Academy,才尚不够Industry,[情无力于Life]。

藤椅
gongxuche1991 在职认证  发表于 2013-10-21 14:24:00
Xaero 发表于 2013-10-20 16:47
Matlab处理字符的能力呢,不能说不强,但确实够烦。最近我一直在和这类问题作斗争。简单分享一点吧:
首先 ...
感谢回复。个人对matlab不太熟悉,不过这个问题已经使用stata很方便的解决了。在stata中使用regexm指令的相关code就直接了事了,很方便的~

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-24 06:13