Narzędzia użytkownika

Narzędzia witryny


r_dplyr_sortowanie

To jest stara wersja strony!


Czasowniki dplyr zarządzające kolumnami (zmiennymi)

Podsumowanie

Usuń niewymienione kolumny Pozostaw niewymienione kolumny
Zmień nazwy i/lub kolejność kolumn select() rename()
Stwórz nową kolumnę transmutate() mutate()
Zmień wartości kolumny transmutate() mutate(), mutate_each()

select

select(tablica, kolumna1, …)

  • Pozostawia w tablicy dplyr-a jedynie wymienione kolumny, układając je w takiej kolejności, w jakiej zostały wymienione.
    • Dodanie znaku - przed nazwą zmiennej spowoduje jej usunięcie.
  • Umożliwia również zmianę nazw kolumn - składnia: nowaNazwa = staraNazwa.
  • Dostępne są funkcje pomocnicze ułatwiające wybór wielu kolumn:
    • wszystkie kolumny pomiędzy dwoma wskazanymi: kolumnaOd : kolumnaDo;
    • kolumny, których nazwa (wszystkie przyjmują argument ignore.case umożliwiający pominięcie wielkości znaków):
      • kończy się na x: ends_with(x)
      • rozpoczyna się od x: starts_with(x)
      • zawiera x: contains(x)
      • pasuje do wyrażenia regularnego x: matches(x)
      • pasuje do sekwencji nazw: num_range(prefiks, wektorLiczb, liczbaZnakówLiczby)
        • np. num_range('p', 1:3, 2) pasuje do kolumn p01, p02, p03.

Przykład

dane = data.frame(arabska = 1:3, litera = c('a', 'b', 'c'), rzymska = c('I', 'II', 'III'))
 
select(dane, litera, id)
# wynikiem będzie:
#
====== Czaswoniki dplyr - sortowanie ======
 
===== arrange =====
 
//**arrange**(tablica, kolumna1, ...)//
 
  * Sortuje [[r_dplyr_tablice|tablicę dplyr-a]] według wartości podanych kolumn.
  * Chcąc uzyskać sortowanie danej kolumny w porządku malejącym, należy użyć składni **//desc(kolumna)//**.
 
==== Przykład ====
 
<code rsplus>
dane = data.frame(x = rep(2:1, 3), y = 1:6)
 
dane
# x y
# ---
# 2 1
# 1 2
# 2 3
# 1 4
# 2 5
# 1 6
 
arrange(dane, y, desc(x))
# wynikiem będzie:
#
# x y
# ---
# 1 6
# 1 4
# 1 2
# 2 5
# 2 3
# 2 1

# litera id # a 1 # b 2 # c 3

select(dane, ends_with('KA')) select(dane, ends_with('ka')) # wynikiem obydwu będzie: # # arabska rzymska # 1 I # 2 II # 3 III

select(dane, ends_with('KA', FALSE)) # wynikiem będzie: # # ramka danych z zerową liczbą kolumn oraz 3 wierszami

select(dane, starts_with('ar'), litera) # wynikiem obydwu będzie: # # arabska litera # 1 a # 2 b # 3 c </code>

rename

rename(tabela, nazwaPo1 = nazwaPrzed1, …)

  • Zmienia nazwy kolumn w tablicy dplyr-a.
    • Możliwa jest zmiana nazwy wielu kolumn jednocześnie.

Przykład

dane = data.frame(arabska = 1:3, litera = c('a', 'b', 'c'), rzymska = c('I', 'II', 'III'))
 
rename(dane, arabska2 = arabska, Litera = litera)
# wynikiem będzie:
#
# arabska2 Litera rzymska
#        1      a       I
#        2      b      II
#        3      c     III

mutate

mutate(tabela, nazwaKolumny1 = definicjaKolumny1, …)

  • Tworzy nowe kolumny w tablicy dplyr-a.
  • Jeśli na tablicy dplyr-a zostało określone grupowanie (np. czasownikiem group_by), wtedy obliczanie wartości odbywać się będzie w ramach tego podziału.
  • Jeśli nazwa tworzonej kolumny będzie się pokrywać z już istniejącą kolumną, dotychczasowe wartości kolumny zostaną nadpisane nowymi.

Przykład

dane = data.frame(arabska = 1:3, litera = c('a', 'b', 'c'), rzymska = c('I', 'II', 'III'))
 
mutate(dane, arabskaRzymska = paste(arabska, rzymska), arabskaLitera = paste(arabska, litera))
# wynikiem będzie:
#
# arabska litera rzymska arabskaRzymska arabskaLitera
#       1      a       I            1 I           1 a
#       2      b      II           2 II           2 b
#       3      c     III          3 III           3 c
 
dane = data.frame(grupa = c(1, 1, 2, 2, 2), wartosc = 1:5)
 
mutate(dane, srednia = mean(wartosc))
# wynikiem będzie:
#
#  grupa wartosc srednia
#      1       1       3
#      1       2       3
#      2       3       3
#      2       4       3
#      2       5       3
 
dane = group_by(dane, grupa)
mutate(dane, srednia = mean(wartosc))
# wynikiem będzie:
#
#  grupa wartosc srednia
#      1       1     1.5
#      1       2     1.5
#      2       3       4
#      2       4       4
#      2       5       4

mutate_each

mutate_each(tabela, funs(funkcja)

  • Nadpisuje wartości wszystkich kolumn w tablicy dplyr-a poprzez zastosowanie do nich wskazanej funkcji.
    • Jeśli do funs przekazanych zostanie wiele funkcji, powstanie tyle nowych kolumn (zmiennych), ile wynosi liczba przekazanych funkcji razy liczba kolumn w tablicy dplyr-a (patrz przykład).
  • Jeśli na tablicy dplyr-a zostało określone grupowanie (np. czasownikiem group_by), wtedy obliczanie wartości odbywać się będzie w ramach tego podziału.

Przykład

dane = data.frame(arabska = 1:3, litera = c('a', 'b', 'c'), rzymska = c('I', 'II', 'III'), stringsAsFactors = F)
 
mutate_each(dane, funs(min))
# wynikiem będzie:
#
# arabska litera rzymska
#       1      a       I
#       1      a       I
#       1      a       I
 
mutate_each(dane, funs(min, max))
# wynikiem będzie:
#
# arabska litera rzymska arabska_min litera_min rzymska_min arabska_max litera_max rzymska_max
#       1      a       I           1          a           I           3          c         III
#       2      b      II           1          a           I           3          c         III
#       3      c     III           1          a           I           3          c         III

transmutate

transmute(tabela, definicjaKolumny1, …)

  • Tworzy nowe kolumny w tablicy dplyr-a, jednocześnie usuwając z niej wszystkie pozostałe kolumny.
    • Jest odpowiednikiem złożenia: mutate() i select() wybierającego tylko kolumny stworzone przez mutate().
  • Jeśli na tablicy dplyr-a zostało określone grupowanie (np. czasownikiem group_by), wtedy obliczanie wartości odbywać się będzie w ramach tego podziału.
    • W takim wypadku zachowywane są również te zmienne (kolumny), które wyznaczają grupy.

Przykład

dane = data.frame(arabska = 1:3, litera = c('a', 'b', 'c'), rzymska = c('I', 'II', 'III'))
 
transmute(dane, arabskaRzymska = paste(arabska, rzymska), arabskaLitera = paste(arabska, litera))
# wynikiem będzie:
#
# arabskaRzymska arabskaLitera
#            1 I           1 a
#           2 II           2 b
#          3 III           3 c
 
dane = data.frame(grupa = c(1, 1, 2, 2, 2), wartosc = 1:5)
 
transmute(dane, srednia = mean(wartosc))
# wynikiem będzie:
#
# srednia
#       3
#       3
#       3
#       3
#       3
 
dane = group_by(dane, grupa)
transmute(dane, srednia = mean(wartosc))
# wynikiem będzie:
#
#  grupa srednia
#      1     1.5
#      1     1.5
#      2       4
#      2       4
#      2       4
r_dplyr_sortowanie.1422346079.txt.gz · ostatnio zmienione: 2015/01/27 09:07 przez zozlak