假设我有一个这样的表:
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 文档 http://de.mathworks.com/help/matlab/matlab_prog/add-and-delete-table-rows.html(请参阅删除行的最后一部分)我发现 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行长的解决方案来解决这个问题?
假设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',:)
Gives:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)