0
私は異なるチームを表す列Aを持つバスケットボールのデータセットを持っています。たとえば、列Aが "The Warriors"と一致したデータセットの最後の数行を抽出するには良い方法がありますか?テーブルの現在の行に一致する前の行を見つける
私がここで意味するのは、列Aが「戦士」などと言った現在の行の前に最後の3行を探したいということです。 R(またはSQLまたはMatlab)でこれをどのようにしますか?
私は異なるチームを表す列Aを持つバスケットボールのデータセットを持っています。たとえば、列Aが "The Warriors"と一致したデータセットの最後の数行を抽出するには良い方法がありますか?テーブルの現在の行に一致する前の行を見つける
私がここで意味するのは、列Aが「戦士」などと言った現在の行の前に最後の3行を探したいということです。 R(またはSQLまたはMatlab)でこれをどのようにしますか?
私はMatlabで解決策を提案できます。
私はちょうどデモのために単一の列A
で最初のランダムテーブルで作成してみましょう:
T =
A
______________
'The Warriors'
'43'
'38'
'40'
'49'
'71'
'69'
'64'
'67'
'The Warriors'
'The Warriors'
'The Warriors'
'131'
'The Warriors'
'119'
'124'
'93'
'109'
'77'
'The Warriors'
'83'
'117'
'75'
'122'
'80'
'Smith'
'Johnson'
'Williams'
'Jones'
'Brown'
今では含まれていブールベクトルを作成することが可能ですtrue
(1)の場合の位置i
で実際
matchresult=cellfun(@(x) strcmp(x,'The Warriors'),T.A);
今matchresult
の形式があります:
'The Warriors'
が含まれています
matchresult =
1
0
0
0
0
0
0
0
0
1
1
1
0
1
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
そして今、我々は最後の3行を見つけるために、全体ではなく、テーブルのこのベクトルをスキャンすることができます:
for i=4:length(matchresult) % since we want 3 rows we can start scanning from the 4th
if(sum(matchresult(1:i-1))>=3) % if there are at least 3 ones in previous rows
fprintf('Scanning row #%d:\n',i); % see the row index we're scanning
find(matchresult((1:i-1)),3,'last') % find 1s in previous rows and display last 3 indices
end
end
注RDBMSのテーブルの行がクエリ自体の中で宣言それ以外には順序がありません。 – Strawberry