替换丢失的表中的字符串

21日视图(30天)
Ory
Ory 2016年9月28日
回答: 彼得·珀金斯 2016年10月3日
我想用字符串替换所有失踪的字符串表中选择,说“未知”。我使用R2016a(没有升级选项),所以功能 fillmissing 没有提供给我,以防他们可以帮助。例如:
dblVar =[南;3;7;9);
cellstrVar = {“一个”;“三”;;“九”};
categoryVar =分类({;“红色”;“黄色”;“蓝”});
=表(dblVar cellstrVar categoryVar)
一个=
dblVarcellstrVarcategoryVar
___________________________
“一个”<定义>
3“三”红色的
7黄色的
9“九”蓝色的
我想要得到这个:
一个=
dblVarcellstrVarcategoryVar
___________________________
“一个”未知的
3“三”红色的
7“未知”黄色的
9“九”蓝色的
注意我也取代了直言“<定义>”,如果你能请包括在你的答案。
有方法吗 没有 变化的结构,如从表到细胞,在此过程中吗?我想避免转换的原因是我的表很大,和转换可能导致内存问题。
编辑添加:失踪的字符串值的位置必须确认,可能会有几个这样的表中的列。
多谢。

接受的答案

乔治
乔治 2016年9月28日
这应该工作:
dblVar =[南;3;7;9);
cellstrVar = {“一个”;“三”;;“九”};
categoryVar =分类({;“红色”;“黄色”;“蓝”});
cellstrVar2 = {“四”;“没有”;“7”;};
=表(dblVar cellstrVar、categoryVar cellstrVar2);
varNames = A.Properties.VariableNames;
2 = 1:元素个数(varNames)
如果iscellstr ({1, varNames{二}})
undefloc = strcmp (a . (2));
一个{undefloc,二}= cellstr (“未知”);
结束
如果iscategorical ({1, varNames{二}})
undefloc = isundefined ({: 2});
{undefloc,二}=分类(cellstr (“未知”));
结束
结束
一个=
dblVarcellstrVarcategoryVarcellstrVar2
______________________________________
“一个”未知的“四”
3“三”红色的“没有”
7“未知”黄色的“7”
9“九”蓝色的“未知”
您可以使用 undefloc 变量来找出事情未定义或空字符串。
4评论
乔治
乔治 2016年9月29日
那就这样吧。如果你这样做,摒弃细胞分类成细胞阵列可以使用花括号语法单元阵列,而不是变量名。

登录置评。

答案(1)

彼得·珀金斯
彼得·珀金斯 2016年10月3日
乔治的循环似乎好我虽然可以调整一下
name = varNames
var = A.name;
如果iscellstr (var)
var (strcmp (var,))= {“未知”};
elseifiscategorical (a .(名字)
var (isundefined (var) =“未知”;
结束
一个。Name = var;
结束
如果你愿意写几个小功能,你可以这样做:
theCellStrs = varfun (@iscellstr);
(:,theCellStrs) = varfun (@replaceEmptyString (:, theCellStrs));
函数c = replaceEmptyString (c)
c (strcmp (c,)= {“未知”};
(同样的分类),但varfun使用下一个循环。

类别

找到更多的在数据类型识别帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!