I need to string match in the second level of a list but have true cases returned at the first level (there's information in the first level that I need to categorize the returns).
First /@ GatherBy[#, #[[3]] &] &@
Cases[#, x_List /;
MemberQ[x, s_String /;
StringMatchQ[s, ("*PHYSICAL EXAMINATION*"),
IgnoreCase -> True]], {2}] &@
Cases[MemoizeTable["Diagnostic_table.txt"], {_,
11111, __}]
The GatherBy command at the top is just organizing all the entries by date so I don't get any duplicates. Then I ask for cases within the diagnostic table that have terms matching the string "PHYSICAL EXAMINATION".
I have to search only the second level of the lists. If I search just the first I don't return all the true cases. If I search the first and second, I get duplicates (some cases include the desired string at both the first and second levels, so the first and second levels of the list are both returned, separately).
I need to search for the string at the second level and then return ONLY the first level of the lists that contain that matched second level. I don't need to exclude the second level, I just don't want it returned separately like it is if I search levels one and two.
Any help would be much appreciated!
Maybe something like this?
Output:
{{a, b, c, {x, y}, d, x}}
Update
This will also work
Update to @rose question (see comments)
Given the following data how can I select for entries which contain the words "PHYSICAL EXAMINATION" within a string, for example within the string "P-023 PHYSICAL EXAMINATION, TECHNICIAN, NOS", at the second level (ie only within the sublist)? (I have modified @rose's example somewhat)
(1) One way (returning only entry 1111114)
(2) Ignore case (but still selecting within sublist)
(selects for entries 1111114 & 1111115)
(3) A final example (select for entries with "No Examination" within sublist but where there may be zero or more characters between "No" and "Examination", and where case is again ignored)
(selects for entry 1111113)
There are no doubt more efficient ways to proceed. I hope I have interpreted the question correctly.
If I understand your requirements, you may consider: