Extracting specific words from cells within a table column and moving them to new column

15 ビュー (過去 30 日間)
Hello! :)
I have a table with multiple columns, whereby one of the columns includes text.
The column looks somewhat like that. Please note that there are way more rows, and I want to address all of them with the code and not just the ones presented here.
'New Scene was loaded: CastleDown'
'Game is trying to save file'
'Saving successful.'
'New Game File created successfully.'
'New Scene was loaded: Outside'
'Periodic Save...'
'Coin collected'
...
What I would like to do is to split only those rows who contain the text "New Scene was loaded: XY", whereby I want to extract the last word, such as "CastleDown" or "Outside" and move it to a new column.
So it should look somewhat like that:
'New Scene was loaded:' 'CastleDown'
'Game is trying to save file' ''
'Saving successful.' ''
'New Game File created successfully.' ''
'New Scene was loaded: Outside' 'Outside'
'Periodic Save...' ''
'Coin collected' ''
... ...
Then, I would also like to enter the text extracted and move to the other column to also fill the empty rows below (until the next word), looking like that:
'New Scene was loaded:' 'CastleDown'
'Game is trying to save file' 'CastleDown'
'Saving successful.' 'CastleDown'
'New Game File created successfully.' 'CastleDown'
'New Scene was loaded: Outside' 'Outside'
'Periodic Save...' 'Outside'
'Coin collected' 'Outside'
... ...
I'm not sure if that makes sense, but I appreciate any help regarding that matter!! Thanks in advance!

採用された回答

Voss
Voss 2022 年 7 月 15 日
t = table({ ...
'New Scene was loaded: CastleDown'; ...
'Game is trying to save file'; ...
'Saving successful.'; ...
'New Game File created successfully.'; ...
'New Scene was loaded: Outside'; ...
'Periodic Save...'; ...
'Coin collected'; ...
},'VariableNames',{'Status'})
t = 7×1 table
Status _______________________________________ {'New Scene was loaded: CastleDown' } {'Game is trying to save file' } {'Saving successful.' } {'New Game File created successfully.'} {'New Scene was loaded: Outside' } {'Periodic Save...' } {'Coin collected' }
is_new = startsWith(t.Status,'New Scene was loaded:');
C = split(t.Status(is_new),':')
C = 2×2 cell array
{'New Scene was loaded'} {' CastleDown'} {'New Scene was loaded'} {' Outside' }
t.Status(is_new) = strcat(C(:,1),':')
t = 7×1 table
Status _______________________________________ {'New Scene was loaded:' } {'Game is trying to save file' } {'Saving successful.' } {'New Game File created successfully.'} {'New Scene was loaded:' } {'Periodic Save...' } {'Coin collected' }
scene_name = repmat({''},height(t),1);
scene_name(is_new) = strtrim(C(:,2));
scene_name = fillmissing(scene_name,'previous');
t.Scene = scene_name
t = 7×2 table
Status Scene _______________________________________ ______________ {'New Scene was loaded:' } {'CastleDown'} {'Game is trying to save file' } {'CastleDown'} {'Saving successful.' } {'CastleDown'} {'New Game File created successfully.'} {'CastleDown'} {'New Scene was loaded:' } {'Outside' } {'Periodic Save...' } {'Outside' } {'Coin collected' } {'Outside' }

その他の回答 (1 件)

Campion Loong
Campion Loong 2022 年 7 月 20 日
編集済み: Campion Loong 2022 年 7 月 20 日
Good code indeed. This is almost the same code, but you could go deeper into string with missing handling in the Data Preprocessing ecosystem.
Simply:
t = table([ ...
"New Scene was loaded: CastleDown"; ...
"Game is trying to save file"; ...
"Saving successful."; ...
"New Game File created successfully."; ...
"New Scene was loaded: Outside"; ...
"Periodic Save..."; ...
"Coin collected"] ...
,'VariableNames',"Status");
t.Scence = extractAfter(t.Status,"New Scene was loaded: ");
t.Scence = fillmissing(t.Scence,'previous');
t.Status(startsWith(t.Status,"New Scene was loaded:")) = "New Scence was loaded:"
t = 7×2 table
Status Scence _____________________________________ ____________ "New Scence was loaded:" "CastleDown" "Game is trying to save file" "CastleDown" "Saving successful." "CastleDown" "New Game File created successfully." "CastleDown" "New Scence was loaded:" "Outside" "Periodic Save..." "Outside" "Coin collected" "Outside"

カテゴリ

Help Center および File ExchangeVideo games についてさらに検索

製品


リリース

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by