Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 70509 Skopiuj do schowka Zamiana z wielu wierszy na jeden wiersz - z dodaniem kolumn.
Autor Wiadomość
marekk_ok
Forumowicz


Wersja: Win Office 2019
Posty: 13
Wysłany: 25-03-2021, 17:37   

Wielkie dzięki za pomoc. Jesteście Wszyscy wielcy!
W rozwiązaniach podanych przez Czesław i Maciej Gonet - rozumiem że musze na początek ręcznie przygotować strukturę pliku wynikowego - podać kolejno w kolumnie ID pacjenta, oraz w wierszu kolejno Kod choroby jaki może wystąpić z całego zbioru wyjsciowego, następnie wpisać formułe?
"Ogarniam" teraz kolejno Wasze rozwiązania od DwaNiedziedzie po Czesław i Macieja Gonet.
Przyznam że taki "zwykły" użytkownik excela raczej nie wpadnie na rozwiązanie - podziwiam Waszą wiedzę w tym zakresie. Pozdrawiam Marek. Gdyby powstały u mnie jakieś problemy pozwolę sobie wrócić z pytaniami :-)

PS jeśli w pliku wejsciowym mam wiele innych kolumn które się powtarzają wartościami w kolejnych wierszach - jak to najlepiej zrobić aby te kolumny też były w pliku wyjsciowym. W załączeniu struktura plik pacjenci-2.xlsx

pacjenci-2.xlsx
Pobierz Plik ściągnięto 10 raz(y) 10.19 KB

ID posta: 402746 Skopiuj do schowka
 
 
kuma 
Excel Expert


Wersja: Win Office 2010
Pomógł: 1453 razy
Posty: 4171
Wysłany: 25-03-2021, 18:09   

Dorzucę rozwiązanie za pomocą VBA.
Dla potrzeb mojego rozwiązania zmieniłem formatowanie nagłówków w końcowej tabeli.

pacjenci_kuma.xlsm
Pobierz Plik ściągnięto 16 raz(y) 22.42 KB

_________________
Pozdrawiam.
ID posta: 402748 Skopiuj do schowka
 
 
Czeslaw
ExcelSpec


Pomógł: 208 razy
Posty: 714
Wysłany: 25-03-2021, 20:30   

Zalacznik z unikatami ID pacjenta i kodu choroby.

pacjenci.xlsx
Pobierz Plik ściągnięto 13 raz(y) 13.97 KB

ID posta: 402759 Skopiuj do schowka
 
 
marekk_ok
Forumowicz


Wersja: Win Office 2019
Posty: 13
Wysłany: 27-03-2021, 14:26   

Moi drodzy, bardzo dziękuję Wam w imieniu moim i zespołu. Przeanalizowaliśmy dane źródłowe i okazało się iż jest jeszcze jedna kolumna jednostek chorobowych w pliku źródłowym którą też pragniemy mieć do analizy -t.j. na zakończenie leczenia jaka jednostka chorobowa jest identyfikowana - kolumna G. Czy jest możliwość przygotowania takiego rozwiązania dla dwóch kolumn w pliku źródłowym z kodami chorób dla choroby rozpoznanej na początku (kolumna E) oraz choroby na koniec leczenia (kolumna G)? Bardzo potrzebujemy aby plik wynikowy miał tylko 1 wiersz dla danego pacjenta (ID pacjenta). Pacjent może mieć inne rozpoznanie choroby na początku oraz inne rozpoznanie po leczeniu. Mogą się jednostki chorobowe różnić, może część się zmniejszyć ale też może coś dojść w wyniku obserwacji i podczas leczenia. Czy można prosić o pomoc? W załączeniu struktura pliku wejściowego (po lewej) oraz pliku który chcielibyśmy uzyskać (po prawej). Mam nadzieję iż dobrze to opisałem. Jeszcze raz dziękuję za dotychczasowe zaangażowanie i proszę o pomoc w tej wersji. Pozdrowienia z Zespołu. Z góry dziękujemy za pomoc.

Pacjenci_all.xlsx
Pobierz Plik ściągnięto 7 raz(y) 10.34 KB

ID posta: 402831 Skopiuj do schowka
 
 
DwaNiedźwiedzie 
Excel Expert



Wersja: Win Office 2016
Pomógł: 284 razy
Posty: 705
Wysłany: 27-03-2021, 16:58   

To ja konsekwentnie popromuję PQ :) Nie sprawdzałem wydajności rozwiązania, jeżeli będziesz miał problemy z obróbką docelowej ilości danych, daj znać.
Kod:
let
    Źródło = Excel.CurrentWorkbook(){[Name="Tabela1"]}[Content],
    fListDist = (l as list) as list => List.Sort(List.Distinct(List.RemoveNulls(l))),
    kol_wst = fListDist(Źródło[#"Wstępne rozpoznanie kod choroby"]),
    kol_kon = fListDist(Źródło[#"Końcowe rozpoznanie kod choroby"]),
    #"Pogrupowano wiersze" = Table.Group(Źródło, {"ID pacjenta", "Nazwisko", "Zamieszkanie", "Wzrost"}, {{"agr", each Table.SelectColumns(_, {"Wstępne rozpoznanie kod choroby","Ilość dni pobytu","Końcowe rozpoznanie kod choroby"}), type table}}),
    fListToRec = (l as list) as record =>
        let
            lst = fListDist(l),
            rec = Record.FromList(lst, lst)
        in rec,
    #"Zagregowany element agr" = Table.AggregateTableColumn(#"Pogrupowano wiersze", "agr", {{"Wstępne rozpoznanie kod choroby", each fListToRec(_), "Wstępne rozpoznanie kod choroby"}, {"Ilość dni pobytu", List.Max, "Ilość dni pobytu"}, {"Końcowe rozpoznanie kod choroby", each fListToRec(_), "Końcowe rozpoznanie kod choroby"}}),
    #"Rozwinięto wstępne" = Table.ExpandRecordColumn(#"Zagregowany element agr", "Wstępne rozpoznanie kod choroby", kol_wst, List.Transform(kol_wst, each "Wstępne rozpoznanie kod choroby - " & _)),
    #"Rozwinięto końcowe" = Table.ExpandRecordColumn(#"Rozwinięto wstępne", "Końcowe rozpoznanie kod choroby", kol_kon, List.Transform(kol_kon, each "Końcowe rozpoznanie kod choroby - " & _))
in
    #"Rozwinięto końcowe"

PS: Pozdrowienia dla zespołu, ciężkie czasy w Waszej branży...

EDIT: Mała poprawka w kwerendzie, przy powtarzających się rozpoznaniach na pacjentach ich wiersze były czyszczone.

Pacjenci_all DN.xlsx
Pobierz Plik ściągnięto 6 raz(y) 21.17 KB

Ostatnio zmieniony przez DwaNiedźwiedzie 27-03-2021, 17:32, w całości zmieniany 1 raz  
ID posta: 402837 Skopiuj do schowka
 
 
marekk_ok
Forumowicz


Wersja: Win Office 2019
Posty: 13
Wysłany: 27-03-2021, 17:10   

Dziekuje DwaNiedziwiedzie. Zbior zrodlowy bedzie mial ok 100 000 rekordow - troche jest z wielu lat dane.
Czasy są ... brak słów...
ID posta: 402839 Skopiuj do schowka
 
 
Bill Szysz 
Excel Expert


Wersja: Win Office 365
Pomógł: 898 razy
Posty: 3603
Wysłany: 29-03-2021, 10:52   

marekk_ok, czy mógłbyś nam napisać w jakim celu chcesz uzyskać taki układ danych (jeden pacjent - jeden wiersz) ? Pytam z czystej ciekawości ponieważ widzę, że przy takim układzie tracisz pewne (być może kluczowe) informacje. Mam na myśli to, że nie jesteś w stanie przyporządkować wstępnym rozpoznaniom końcowych rozpoznań. Innymi słowy nie wiesz jakie było końcowe rozpoznanie gdy początkowym rozpoznaniem było np O5 (czy końcowe to O6, T3 czy T1)?
Nie precyzujesz też czy mogą występować wielokrotnie takie same rozpoznania dla danego pacjenta i jeśli tak to co w takiej sytuacji zrobić?

Podzielam zdanie Niedźwiadków - wykorzystałbym PQ do tego.... a kod?...no cóż, najpierw musze więcej wiedzieć na temat danych (np choćby to ile macie unikatowych kodów chorób) by zaproponowac rozwiązanie.
_________________
Zlecenia, konsultacje, doradztwo i szkolenia z Power Query, Power BI i Excela - Raporty, Analizy, Projekty
Pozdrawiam, były szbill62 aktualnie Bill Szysz
ID posta: 402897 Skopiuj do schowka
 
 
marekk_ok
Forumowicz


Wersja: Win Office 2019
Posty: 13
Wysłany: 29-03-2021, 19:16   

Bill Szysz napisał/a:
marekk_ok, czy mógłbyś nam napisać w jakim celu chcesz uzyskać taki układ danych (jeden pacjent - jeden wiersz) ? Pytam z czystej ciekawości ponieważ widzę, że przy takim układzie tracisz pewne (być może kluczowe) informacje. Mam na myśli to, że nie jesteś w stanie przyporządkować wstępnym rozpoznaniom końcowych rozpoznań. Innymi słowy nie wiesz jakie było końcowe rozpoznanie gdy początkowym rozpoznaniem było np O5 (czy końcowe to O6, T3 czy T1)?
Nie precyzujesz też czy mogą występować wielokrotnie takie same rozpoznania dla danego pacjenta i jeśli tak to co w takiej sytuacji zrobić?

Podzielam zdanie Niedźwiadków - wykorzystałbym PQ do tego.... a kod?...no cóż, najpierw musze więcej wiedzieć na temat danych (np choćby to ile macie unikatowych kodów chorób) by zaproponowac rozwiązanie.


Witam serdecznie, dziękuje za odzew.
Spróbuję to opisać po kolei jak to się dzieje na oddziale i cel, wiec:
1. Celem jest analiza różnych jednostek chorobowych (głównie wg klasytfikacji międzynarodowej chorób ICD 10) i zależności pomiędzy nimi. Zdarza się iż jeśli wystepuje np. choroba A to częściej pojawia się choroba B. Ponadto chcę wychwycić takie zależności które mogą nie być zauważone, a przy analizie mogą wyjść. Ponadto da to obraz ile % pacjentów ma daną jednostkę chorobową z całości oraz np. z pewnej grupy.
2. Rozpoznania są w 3 etapach - a) etap przyjęcia b) etap leczenia c)etap zakończenia. Generalnie mogę je na koniec analizować czy dana jednostka wystąpiła czy nie. Tzn. Jesli pacjent miał chorobę przy przyjeciu A1 i A2 a przy wypisie A1, A2 i B1 to znaczy że podczas leczenia odkryto B1 która przy przyjeciu nie była zidentyfikowana. Reasumując pragnę analizować wszytkie stwierdzone jednostki od przyjecia poprzez leczenie do wypisu.
Dlatego chce mieć kazdego pacjenta w osobnym wierszu, gdzie kolejne koolumny beda pokazywac kolejne choroby, gdzie kazdy z pacjentów bedzie miał inne - wiec dany pacjent bedzie mial zapisy w kolumnie za dana choroba miał lub puste ze nie mial. Wiem ze tych koluimn bedzie ok 100 do 200 lub wiecej (czyli unikatowych chorób). Ale wazne dla mnie abym wszystkie je widzial i mogl pozniej filtrowac rozne uklady i spojrzenia na calosc.
Moga być oczywiscie rozpoznania takie same np. A1 dla przyjecia i A1 dla wypisu , ale bede je widzial bo bedzie kolumna - choroba A1 przayjecie, oraz choroba A1 wypis.
3. Danych zrodłowych jest na poziomie 500 000 wierszy.
4. Po przygotowaniu danych dot. chorób, i stworzeniu arkusza z ok 10.000 pacjentów (tyle bedzie wierszy ) i ok. 200 kolumn - tyle bedzie kolumn bede musial jeszcze po id pacjenta (ktore jest niepowtarzalne) połaczyc jeszcze inne informacje - czyli dodac kolejne kolumny jak np. waga tego pacjenta, wiek, wzrost, i inne - ok 50 nowych kolumn.

Tak to wyglada calosc tego zadania.
Mam nadzieje ze excel i PQ to jest w stanie obsłużyć.
A na koniec ma to służyć dla pacjentów a doikładnie dla noworodków na oddziale neonatologicznym.
Pozdrawiam
Marek

PS Gdyby coś było z mojego opisu nie tak to prosze o informacje, od razu postaram sie uzupelnic opis.

PS1 - myslalem wczesniej ze zbior wej bedzie mniejszy, ale okazalo sie ze jest b.duzy
ID posta: 402930 Skopiuj do schowka
 
 
marekk_ok
Forumowicz


Wersja: Win Office 2019
Posty: 13
Wysłany: 29-03-2021, 19:27   

Wynikowy plik będzie bardzo dla nas cenny, dane pochodzą z wielu lat i będzie można z nich "wyczytać" wiele informacji dla nas ważnych przy leczeniu. Opieka nad noworodkiem i leczenie przez ostanie lata bardzo uległy poprawie, posiadając te dane dodatkowo wspomogą pracę neonatologów. Pozdrawiam Marek.
Dziękuje za Wasz zaangażowanie i chęć pomocy :-)

Ps
wiedza rozszerzona która pozwoliłaby na takie zbudowanie analizy w excelu, niestety nie jest dostępna dla mnie i wśród kolegów też nie ....
ID posta: 402931 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe