MATLAB: I have a timetable with 10 columns that are all binary and I want to add them together so I get a sum of those binary numbers for each row. Is there an easy way to do this

timetable column summation

0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
0 1 0 0 1 0 1 0 1 1
this is a copy and paste of the timetable, but it has nearly 2 million rows so I want to find an easy way to do this! Thanks in advance.

Best Answer

There are several ways to do this, here's one particularly simple one. Assuming you are starting with something like this ...
>> tt1 = array2timetable(randi([0 1],5,3),'rowTimes',seconds(1:5))
tt1 =
5×3 timetable
Time Var1 Var2 Var3
_____ ____ ____ ____
1 sec 1 1 1
2 sec 0 1 0
3 sec 1 0 1
4 sec 1 0 0
5 sec 1 0 1
... then combine the vars into one, and sum across rows.
>> tt2 = mergevars(tt1,1:3)
tt2 =
5×1 timetable
Time Var1
_____ ___________
1 sec 1 1 1
2 sec 0 1 0
3 sec 1 0 1
4 sec 1 0 0
5 sec 1 0 1
>> tt2.Var1 = sum(tt2.Var1,2)
tt2 =
5×1 timetable
Time Var1
_____ ____
1 sec 3
2 sec 1
3 sec 2
4 sec 1
5 sec 2
Or maybe you want to keep the individual vars around:
>> tt1.Var4 = sum(tt1{:,:},2)
tt1 =
5×4 timetable
Time Var1 Var2 Var3 Var4
_____ ____ ____ ____ ____
1 sec 1 1 1 3
2 sec 0 1 0 1
3 sec 1 0 1 2
4 sec 1 0 0 1
5 sec 1 0 1 2