假设我有一个这样的表:
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 包括发布日期。
当查看 MATLAB's documentation 时(请参阅删除行的最后一部分)我发现 MATLAB 允许您根据某些标准为表创建掩码。所以在我的情况下,如果我做这样的事情:
postsA = myTable.user == 'A'
我得到了一个很好的掩码向量,如下所示:
>> postsA =
1
0
1
1 显然是 myTable 中的那些行,它们满足我给出的规则。
在文档中,我指出上面的行已从原始表中删除:
postsNotA = myTable.user ~= 'A' % note that I have to reverse the criterion since I'm choosing stuff that will be removed
myTable(postsNotA,:) = [];
但是,如上所述,我不想碰我原来的 table 。一种可能的解决方案是创建一个包含两列的空表:
post date
____ ____
遍历原始表的所有行,同时查看掩码向量 postsA 的当前值,如果它等于 1,则复制我在该行中的两列我感兴趣并将这个缩小的行连接到我的小表。我想知道这个问题是否有或多或少的 1-2 行长的解决方案?
最佳答案
假设 myTable
是您的原始表。
你可以这样做
myTable(myTable.user == 'A',:)
示例代码:
user = ['A';'B';'A';'C';'B'];
Age = [38;43;38;40;49];
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];
T = table(user,Age,Height,Weight,BloodPressure)
T(T.user=='A',:)
给予:
T =
user Age Height Weight BloodPressure ____ ___ ______ ______ _________________________ A 38 71 176 124 93 B 43 69 163 109 77 A 38 64 131 125 83 C 40 67 133 117 75 B 49 64 119 122 80
ans =
user Age Height Weight BloodPressure ____ ___ ______ ______ _________________________ A 38 71 176 124 93 A 38 64 131 125 83
关于MATLAB - 根据某些标准提取表中的选定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27300187/