Producing strings in empty column based on strings on another column

2 次查看(过去 30 天)
I have a spreadsheet with a blank column (57x1) that I want filled out based on the strings on another column (57x1).
Basically
If column 5 contains brad, the corresponding row in column 7 should have brad
If column 5 contains fred, the corresponding row in column 7 should have fred
If column 5 is a contains mike , angie, or alex, the corresponding row in column 7 should have oscar.
If column 5 contains any other name (jack, joe, etc), the corresponding row in column 7 should have roger
Column 5
mike
mike
brad
brad
angie
fred
fred
alex
jack
joe
matt
brad
Column 7 should look like this
oscar
oscar
brad
brad
oscar
fred
fred
oscar
roger
roger
roger
brad
How do I do this ?
  1 个评论
Image Analyst
Image Analyst 2020-6-18
Try strcmpi() or contains(). Make it easy for people to help you. Give us your table in a .mat file, or give code to construct it. It will make it easier for people to try things and help you.

请先登录,再进行评论。

采纳的回答

Mara
Mara 2020-6-18
编辑:Mara 2020-6-18
array(:,5) = ["mike" "mike" "brad" "angie"]
sz = size(array, 1);
for i = 1:sz
name = array(i, 5);
switch name
case "mike"
array(i,7) = "oscar"
case "brad"
array(i,7) = "brad"
case "angie"
array(i,7) = "oscar"
otherwise
array(i,7) = "roger"
end
end
Does this help you?
  6 个评论
Sole
Sole 2020-6-23
I have a slightly more complex one using the same existing table. If column 3 is "fast" AND column 4 contains any of these characters: boat, car, or airplane. then column 5 become those strings on column 4. If it meets just the "fast" in column 3, then column 5 becomes "fast". Otherwise it's none. Is this where I use an if else statement ? Here's an example
column 3
fast
fast
slow
medium
fast
column 4
mike boat day
pax airplane oscar
ship
car
train
column 5
boat
airplane
none
none
fast
Mara
Mara 2020-6-24
编辑:Mara 2020-6-24
Yes you can probably find a way to do it with an if statement. Another way would be by using two logical vectors. Note that in the previous example "allmikes" is a logical vector of 0(false) and 1(true). You can create logical vectors for both columns and put an input in column 5 where both is true.
Note that strcmpi() will not give you any true result for column four, since it only compares the whole strings. But you can use contains().
ar((strcmpi(ar(:,1), "fast") & contains(ar(:,2), "boat")), 5) = "boat"

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Data Type Conversion 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by