【发布时间】:2017-08-09 22:33:40
【问题描述】:
假设我有一张这样的桌子:
post user date
____ ____ ________________
1 A 12.01.2014 13:05
2 B 15.01.2014 20:17
3 A 16.01.2014 05:22
我想创建一个较小的表(但不删除原来的表!),其中包含用户 A 的所有帖子(例如,用户 A),包括这些帖子的发布日期。
查看MATLAB's documentation(请参阅最后一部分删除行)时,我发现 MATLAB 允许您根据某些标准为表创建掩码。所以在我的情况下,如果我做这样的事情:
postsA = myTable.user == 'A'
我得到一个很好的掩码向量如下:
>> postsA =
1
0
1
其中 1s 显然是 myTable 中的那些行,它们满足我给出的规则。
在我指出的文档中,上面的行已从原始表中删除:
postsNotA = myTable.user ~= 'A' % note that I have to reverse the criterion since I'm choosing stuff that will be removed
myTable(postsNotA,:) = [];
但是——如上所述——我不想碰我原来的桌子。一种可能的解决方案是创建一个包含两列的空表:
post date
____ ____
遍历我的原始表的所有行,同时查看我的掩码向量 postsA 的当前值,如果它等于 1,则复制我在该行中的两列我对这个缩小的行感兴趣并将其连接到我的小桌子上。我想知道这个问题是否有或多或少 1-2 行长的解决方案?
【问题讨论】:
-
table(t1.post(strcmp(t1.user,'A')),t1.date(strcmp(t1.user,'A')))怎么样,t1是您的原始表格? -
这将返回一个空表。由于我的数据集很大,我重新创建了与原始帖子中相同的表,以测试您的方式。你测试过吗?如果是这样,请您发布您的代码以便我进行比较。
-
感谢您的帮助!
标签: matlab datatable extract subset