【发布时间】:2014-11-22 14:06:31
【问题描述】:
作为前言,我一直在寻找解决方案,我尝试了无数代码,但没有一个适用于特定情况。
我有一个变量,即不同英国公司的注册号。数据最初来自Stata,我不得不使用代码将非数字数据导入Matlab。这个变量 (regno) 是数值,直到观测值 18000(大约)。从那时起,它就变成了包含字母和数字的注册号。
我写了一个非常粗略的循环,抓取初始变量(单元格),取出双引号,并将字符提取到另一个矩阵(双精度)中。代码是:
regno2 = strrep(regno,'"','');
regno3 = cell2mat(regno2);
regno4 = [];
for i = 1:size(regno3,1);
regno4(i,1) = str2double(regno3(i,1:8));
end
对于同时包含字母和数字的变量,我得到 NaN。我需要将变量作为双精度变量,以便在 MatLab 中将它们用作虚拟指标变量。有什么想法吗?
谢谢
【问题讨论】:
-
您能举一个小例子来说明 regno 通常的样子吗?上面的解释我没看懂抱歉。
-
对不起,让我解释一下。原始 regno 变量具有以下组件: '"04352558"' '"04375023"' '"04406319"' '"NI000166"' '"NI000166"' '"NI000166"' 我只是抓住了一些观察结果来显示这两种类型案例(数字和字母数字)。我设法将第一种类型的观察结果加倍,但对于第二种类型的观察却无法做到(我得到 NaN)
-
好的,谢谢。因此,对于示例“NI000166”,您只想恢复数字 000166 对吗?
-
最好我需要恢复所有这些,包括信件。但是由于变量本身除了作为指标之外没有任何经济用途,我不确定仅提取数字是否会产生任何影响。唯一的问题是,如果其中一个数字观测值(例如,“00001234”)与字母数字观测值(即“SC001234”)具有相同的数字。那么指示变量会将两个观测值视为相等,这可能会造成问题。
标签: matlab char type-conversion