How to count the amount of times certain row changes in a table?

조회 수: 2 (최근 30일)
Richard Michaud Langis
Richard Michaud Langis 2022년 5월 3일
편집: dpb 2022년 5월 3일
So I have a table, 8 columns and a varying amount of rows. The last 3 columns are always going to be [ 1 0 0 ], [ 0 1 0 ] or [ 0 0 1 ]. I would like to be able to count the amount of times, one row of these 3 columns that are not the same as the previous one (ex: row1 [ 0 1 0 ], row2 [ 0 1 0 ], row 3 [ 0 0 1], this counts as 2). Would taking these 3 columns apart help, if so how?

답변 (1개)

dpb
dpb 2022년 5월 3일
" Would taking these 3 columns apart help...?"
No.
tT.Diff=[false;any(diff(tT.X),2)];
  댓글 수: 4
Richard Michaud Langis
Richard Michaud Langis 2022년 5월 3일
head(T)
ans =
8×8 table
Var1 Var2 Var3 Var4 Var5 Var6 Var7 Var8
____ ____ ____ ____ ____ ____ ____ ____
0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 1
So Basically, I want to count how many times the data in Var6, Var7, Var8 are different in one row from the previous one.
dpb
dpb 2022년 5월 3일
편집: dpb 2022년 5월 3일
Yes, so what's the problem? It's a little simpler in your first scenario where the columns were all in one array, but the same idea.
tDiff=[false; any(diff(tT{:,{'Var6','Var7','Var8'}}),2)];
See the link @doc:table -- specifically the subsection at bottom on accessing data from a table.
The count is simply
sum(tDiff)
If you don't need to know where the changes are, then you don't need the new table variable, it can just be a temporary without assignment.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Tables에 대해 자세히 알아보기

제품


릴리스

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by