从大单元格数组中删除重复的行

3次浏览(过去30天)
mashtine
mashtine 2014年3月5日
评论道: mashtine 2014年3月5日
我以前问过这个问题,但这似乎有点棘手!
我有一个单元格数组(附加)的结构1 x 2和1 x 8。这保存了2年的数据,1 x 8数组的8个数组保存了各种格式的数据。
然而,数据的副本是这样的:
HCM ' 2000-01-10一点' ' ' ' 268 ' ' 20 ' ' 260 ' ' 2345 ' ' 0 ' ' 90 '
HCM ' 2000-01-10一点' ' ' ' 268 ' ' 20 ' ' 260 ' ' 2345 ' ' 0 ' ' 90 '
”“2000-01-10两点“HCM”“268年”“14”“210”“645”“3”“12”
”“2000-01-10两点“HCM”“268年”“14”“210”“645”“3”“12”
“2000-01-10 3”的HCM ' ' 268 ' ' 02 ' ' 230 ' ' 345 ' ' 2 ' ' 40 '
“2000-01-10 3”的HCM ' ' 268 ' ' 02 ' ' 230 ' ' 345 ' ' 2 ' ' 40 '
上面显示的每一列实际上表示一个XXXX x 1单元格数组(不记得行数)
由于时间顺序非常重要,我想从每个数组中删除相应的重复行(基于第一次数组),而不改变顺序以获得如下内容:
HCM ' 2000-01-10一点' ' ' ' 268 ' ' 20 ' ' 260 ' ' 2345 ' ' 0 ' ' 90 '
”“2000-01-10两点“HCM”“268年”“14”“210”“645”“3”“12”
“2000-01-10 3”的HCM ' ' 268 ' ' 02 ' ' 230 ' ' 345 ' ' 2 ' ' 40 '
如果你能帮我,那就帮大忙了。我已经尝试了太多太多的选择!
2的评论
mashtine
mashtine 2014年3月5日
正确,最棘手的部分是描述这个,因为我不习惯它。Star在帮助我时真的表现出了耐心,我认为他关于重塑的最后评论(在我的情况下,将1x8单元格数组变成2767793 x8),然后运行他上面的代码。但是,由于数据格式不同,我不能使用cell2mat。
我附上了上面的文件,以更好地显示我的数据。再次感谢你的帮助!

登录评论。

接受的答案

托马斯。
托马斯。 2014年3月5日
编辑:托马斯。 2014年3月5日
wit_dup = {HCM ' 2000-01-10一点' ' ' ' 268 ' ' 20 ' ' 260 ' ' 2345 ' ' 0 ' ' 90 '
HCM ' 2000-01-10一点' ' ' ' 268 ' ' 20 ' ' 260 ' ' 2345 ' ' 0 ' ' 90 '
”“2000-01-10两点“HCM”“268年”“14”“210”“645”“3”“12”
”“2000-01-10两点“HCM”“268年”“14”“210”“645”“3”“12”
“2000-01-10 3”的HCM ' ' 268 ' ' 02 ' ' 230 ' ' 345 ' ' 2 ' ' 40 '
“2000-01-10 3”的HCM ' ' 268 ' ' 02 ' ' 230 ' ' 345 ' ' 2 ' ' 40 '
wd = wit_dup;
[~, idx] =独特(strcat (wd (: 1), wd (:, 2), wd (:, 3), wd (:, 4), wd (:, 5), wd (:, 6), wd (:, 7), wd (:, 8)));
withoutduplicates = wd (idx:)
1评论
mashtine
mashtine 2014年3月5日
谢谢,托马斯,我很确定这会起作用,但我的数据有点不同。你看了我上传的文件了吗?1x8数组的前两个数组是单元格,其余的数组是双元数组,因此格式化会将其丢弃。这将是最肯定的工作,但是,如果我可以使他们所有的双重,然后执行您的代码或之前提供的。

登录评论。

更多答案(0)

类别

了解更多操作符和基本操作帮助中心而且文件交换

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!