Krzysztof Szulca

Krzysztof Szulca Makler Papierów
Wartościowych -
analityk portfeli
wierzyt...

Temat: Sortowanie tabeli

Tym razem mam problem z posortowaniem tabeli wg jednego z wierszy.

Mianowicie mam tabelę wkaźników posiadająca 4 wiersze i ok 100 kolumn. Muszę posortować tę tablicę według danych zawartych w 4 wierszu.
Funkcja sort() się nie sprawdza poniewaz nie zachowuje struktury tablicy.

Znacie jakąś funkcję?

Temat: Sortowanie tabeli

Zakładam, że masz te dane w ramce danych i masz ponazywane wiersze i kolumny (rownames(), colnames(), as.data.frame())

 > m
wsk1 wsk2 wsk3 wsk4 wsk5
a 1 2 3 4 5
b 3 2 3 4 1
c 5 4 3 4 7
d 7 5 3 7 1


Dokonujesz transpozycji i zapisujesz sobie w tej samej bądź nowej zmiennej
 > m <- as.data.frame(t(m))
> m
a b c d
wsk1 1 3 5 7
wsk2 2 2 4 5
wsk3 3 3 3 3
wsk4 4 4 4 7
wsk5 5 1 7 1


i sortujesz po wybranym wierszu z jednoczesną transpozycją do pierwotnej postaci tabeli.
> t(m[with(m, order(d)),])
wsk5 wsk3 wsk2 wsk1 wsk4
a 5 3 2 1 4
b 1 3 2 3 4
c 7 3 4 5 4
d 1 3 5 7 7


w pojedynczym zapisie:
> t(as.data.frame(t(m))[with(as.data.frame(t(m)), order(d)),])
wsk5 wsk3 wsk2 wsk1 wsk4
a 5 3 2 1 4
b 1 3 2 3 4
c 7 3 4 5 4
d 1 3 5 7 7
Adrian Olszewski edytował(a) ten post dnia 12.04.12 o godzinie 15:50
Krzysztof Szulca

Krzysztof Szulca Makler Papierów
Wartościowych -
analityk portfeli
wierzyt...

Temat: Sortowanie tabeli

Super! Wielkie dzięki.

Jak rozumiem cały trik polega na tym, że ów sortowanie jest możliwe tylko po kolumnach? A po wierszach niestety nie ma możliwości.

Jeszcze raz wielkie dzięki za wyczerpującą i błyskawiczną pomoc.

Temat: Sortowanie tabeli

Hmmm... nie bardzo wyobrażam sobie sortowanie po wierszach :)
Sortowanie po zbiorze wartości danego atrybutu - owszem, natomiast sortowanie... atrybutów po krotce?

Twoje zadanie daje się bez problemu przeformułować, transpozycja nadal daje sensowną strukturę do sortowania: oto sortujemy wskaźniki (funkcje) wedle jakiejś ich cechy, przejawiającej się w wyniku ich działania, np. czułość, specyficzność, etc. Mamy cztery zestawy wyników, zapewne czymś się różniących (może różnymi parametrami, zbiorem danych wejściowych, etc), skoro możemy wybrać konkretny wiersz i dokonać sortowania wedle niego.

Tak czy siak, fajnie, że to rozwiązało Twój problem :)
Wojciech Sobala

Wojciech Sobala Redaktor
statystyczny,
biostatystyk,
Instytut Medycyny
Pr...

Temat: Sortowanie tabeli

Sortowanie wg. 4 wiersza tabeli:


wsk1 wsk2 wsk3 wsk4 wsk5
a 1 2 3 4 5
b 3 2 3 4 1
c 5 4 3 4 7
d 7 5 3 7 1

dane[order(dane[4,])]

wsk5 wsk3 wsk2 wsk1 wsk4
a 5 3 2 1 4
b 1 3 2 3 4
c 7 3 4 5 4
d 1 3 5 7 7

Wojciech Sobala edytował(a) ten post dnia 13.04.12 o godzinie 11:51

Temat: Sortowanie tabeli

<facepalm> musiało mnie zaćmić :)
Za dużo SQLa...
Wojciech Sobala

Wojciech Sobala Redaktor
statystyczny,
biostatystyk,
Instytut Medycyny
Pr...

Temat: Sortowanie tabeli

Adrian Olszewski:
<facepalm> musiało mnie zaćmić :)
Za dużo SQLa...

Nie było tak źle, przecież działa poprawnie :).

Następna dyskusja:

Sortowanie w R




Wyślij zaproszenie do