Split column data into two columns

I have a column of data with numbers formatted as a string. All of the 3,000 plus entries are five characters long such as 01234. I would like to split that out into two columns so that one column would be the first two numbers and the other the last three, such as 01 234. I cannot seem to find the right solution for this. Any thoughts?

1 Comment

Kellie Anton
Kellie Anton on 3 Aug 2017
Edited: Kellie Anton on 3 Aug 2017
I finally got something to work. I had to take my column out into its own cell array 'goop'.
glop = cellfun(@(x) x(1:2), goop, 'UniformOutput', false);
glup = cellfun(@(x) x(3:end), goop, 'UniformOutput', false);
Honestly, I do not understand why it would not let me do it in the table directly. Instead, it just gives me a column of 2X1 cells.
Anyhow, this will work for my purposes. I just was hoping for something more... efficient.

Sign in to comment.

Answers (1)

Could you elaborate what you have as a matrix?
If you are using character arrays, it should just be a 5-column matrix to start with. So all you need to do is just getting the first 2 columns and then last 3 columns. For example
a = ['01234';'12345']
a(:,1:2)
a(:,3:5)
Does this help?

3 Comments

I tried that earlier... unfortunately, my computer closed MATLAB and I do not have it. The thing is that it did not work, but I was trying to do it right in the table. IOW, what you have as a, I had as A.code from a table with say five variables and 'code' is one such variable. Does that make sense?
Here is what I tried this morning...
glop = goop(:,1:2);
Index exceeds matrix dimensions.
goop is a 3283X1 cell.
maybe you can try
glop = goop{1}(:,1:2)
HTH

Sign in to comment.

Categories

Asked:

on 2 Aug 2017

Commented:

on 3 Aug 2017

Community Treasure Hunt

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

Start Hunting!