Narzędzia użytkownika

Narzędzia witryny


r_dplyr_wiersze

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
r_dplyr_wiersze [2014/12/17 09:46]
zozlak [slice]
r_dplyr_wiersze [2015/03/10 11:59] (aktualna)
zozlak [filter]
Linia 5: Linia 5:
 //​**filter**(tablica,​ warunek1, ...)// //​**filter**(tablica,​ warunek1, ...)//
  
-  * Pozostawia w //tablicy// tylko te wiersze, które spełniają **wszystkie** przekazane warunki.+  * Pozostawia w [[r_dplyr_tablice|tablicy ​dplyr-a]] ​tylko te wiersze, które spełniają **wszystkie** przekazane warunki.
   * Pojedynczy warunek może być dowolnym wyrażeniem R, byleby ostatecznie zwracał wektor logiczny długości takiej, jak liczba wierszy //​tablicy//​.   * Pojedynczy warunek może być dowolnym wyrażeniem R, byleby ostatecznie zwracał wektor logiczny długości takiej, jak liczba wierszy //​tablicy//​.
     * Jeśli dane nie były jeszcze pobierane z serwera (np. czasownikiem collect()), dostępne są wyłącznie następujące funkcje i operatory R (zauważmy, że nie ma tam //​grepl()//​):​     * Jeśli dane nie były jeszcze pobierane z serwera (np. czasownikiem collect()), dostępne są wyłącznie następujące funkcje i operatory R (zauważmy, że nie ma tam //​grepl()//​):​
Linia 11: Linia 11:
       * funkcje matematyczne:​ abs, acos, acosh, asin, asinh, atan, atan2, atanh, ceiling, cos, cosh, cot, coth, exp, floor, log, log10, round, sign, sin, sinh, sqrt, tan, tanh       * funkcje matematyczne:​ abs, acos, acosh, asin, asinh, atan, atan2, atanh, ceiling, cos, cosh, cot, coth, exp, floor, log, log10, round, sign, sin, sinh, sqrt, tan, tanh
       * operatory porównań: <, <=, !=, >=, >, ==, %in%       * operatory porównań: <, <=, !=, >=, >, ==, %in%
-      * operatory logiczne: boolean operations: &, &&, |, ||, !, xor+      * operatory logiczne: &, &&, |, ||, !, xor 
 +  * **Jeśli warunek zawiera alternatywę (operator |), to należy wziąć go w nawias**, aby uniknąć problemów z priorytetem operatorów,​ np.  
 +    * //​filter(tablica,​ a, b | c)// odfiltruje //(a i b) lub c//,  
 +    * dopiero //​filter(tablica,​ a, (b | c))// odfiltruje //a i (b lub c)//
  
 ==== Przykład ==== ==== Przykład ====
  
-<​code>​+<​code ​rsplus>
 t1 = data.frame(id = 11:16, zmienna1 = c('​a',​ '​b',​ '​c',​ '​d',​ '​e',​ '​f'​)) t1 = data.frame(id = 11:16, zmienna1 = c('​a',​ '​b',​ '​c',​ '​d',​ '​e',​ '​f'​))
  
Linia 37: Linia 40:
 //​**slice**(tablica,​ wektorNumerówWierszy)//​ //​**slice**(tablica,​ wektorNumerówWierszy)//​
  
-  * Wybiera z //tablicy// wiersze o wskazanych numerach+  * Wybiera z [[r_dplyr_tablice|tablicy ​dplyr-a]] ​wiersze o wskazanych numerach
     * jeśli numer wiersza jest ujemny, dany wiersz jest usuwany, jeśli dodatni, wybierany.     * jeśli numer wiersza jest ujemny, dany wiersz jest usuwany, jeśli dodatni, wybierany.
   * Odpowiednik R-owej składni //​tablica[wektorNumerówWierszy,​ ]//.   * Odpowiednik R-owej składni //​tablica[wektorNumerówWierszy,​ ]//.
Linia 43: Linia 46:
 ==== Przykład ==== ==== Przykład ====
  
-<​code>​+<​code ​rsplus>
 t1 = data.frame(id = 11:16, zmienna1 = c('​a',​ '​b',​ '​c',​ '​d',​ '​e',​ '​f'​)) t1 = data.frame(id = 11:16, zmienna1 = c('​a',​ '​b',​ '​c',​ '​d',​ '​e',​ '​f'​))
 slice(t1, c(2, 4, 6)) slice(t1, c(2, 4, 6))
Linia 54: Linia 57:
 </​code>​ </​code>​
  
-===== semi_join =====+===== distinct ===== 
 + 
 +//​**distinct**(tablica)//​ 
 + 
 +  * Usuwa z tablicy duplikaty (aby wiersze uznać za duplikaty, muszą mieć jednakowe wartości we wszystkich kolumnach). 
 + 
 +==== Przykład ==== 
 + 
 +<code rsplus>​ 
 +dane = data.frame(x = c(1, 1, 1), y = c(1, 2, 1)) 
 +distinct(dane) 
 +# wynikiem będzie: 
 +
 +# x y 
 +# 1 1 
 +# 1 2 
 +</​code>​ 
 + 
 +===== semi_join, intersect ​=====
  
 //​**semi_join**(tablica1,​ tablica2)// //​**semi_join**(tablica1,​ tablica2)//
 +
 +//​**intersect**(tablica1,​ tablica2)//
  
   * Pozostawia w //​tablicy1//​ tylko te wiersze, które pasują do jakiegoś wiersza tablicy //​tablica2//​.   * Pozostawia w //​tablicy1//​ tylko te wiersze, które pasują do jakiegoś wiersza tablicy //​tablica2//​.
-    * Porównanie ​dokonywane jest tylko na podstawie kolumn wspólnych dla obydwu tablic. +    * W wypadku //​semi_join()//​ porównanie ​dokonywane jest tylko na podstawie kolumn wspólnych dla obydwu tablic. 
-  **Uwaga!** Nie należy używać tego czasownika na tablicach, które nie zostały jeszcze pobrane z serwera czasownikiem ​//collect()// - implementacja tego czasownika po stronie serwera jest fatalnie ślamazarna.+    W wypadku ​//intersect()// obydwie tablice muszą posiadać identyczny zestaw kolumn.
  
 ==== Przykład ==== ==== Przykład ====
  
-<​code>​+<​code ​rsplus>
 t1 = data.frame(id = 1:3, zmienna1 = c('​a',​ '​b',​ '​c'​)) t1 = data.frame(id = 1:3, zmienna1 = c('​a',​ '​b',​ '​c'​))
 t2 = data.frame(id = 2:4, zmienna2 = c('​x',​ '​y',​ '​z'​)) t2 = data.frame(id = 2:4, zmienna2 = c('​x',​ '​y',​ '​z'​))
Linia 73: Linia 96:
 #  2        b #  2        b
 #  3        c #  3        c
 +
 +intersect(t1,​ t2)
 +# wynikiem będzie:
 +#
 +# BŁĄD: not compatible
 +
 +intersect(t1 %>% select(id), t2 %>% select(id))
 +# wynikiem będzie:
 +#
 +# id
 +#  2
 +#  3
 </​code>​ </​code>​
  
-===== anti_join =====+===== anti_join, setdiff ​=====
  
 //​**anti_join**(tablica1,​ tablica2)// //​**anti_join**(tablica1,​ tablica2)//
  
-  ​* Pozostawia w //​tablicy1//​ tylko te wiersze, które pasują do jakiegoś ​wiersza tablicy //​tablica2//​. + 
-    * Porównanie ​dokonywane jest tylko na podstawie kolumn wspólnych dla obydwu tablic. +//​**setdiff**(tablica1,​ tablica2)//​ 
-  * **Uwaga!*Nie należy używać tego czasownika na tablicach, które nie zostały jeszcze pobrane z serwera czasownikiem ​//collect()// - implementacja tego czasownika po stronie serwera jest fatalnie ślamazarna.+ 
 +  ​* Pozostawia w //​tablicy1//​ tylko te wiersze, które ​nie pasują do żadnego ​wiersza tablicy //​tablica2//​. 
 +    * W wypadku //​anti_join()//​ porównanie ​dokonywane jest tylko na podstawie kolumn wspólnych dla obydwu tablic. 
 +    W wypadku ​//setdiff()// obydwie tablice muszą posiadać identyczny zestaw kolumn.
  
 ==== Przykład ==== ==== Przykład ====
  
-<​code>​+<​code ​rsplus>
 t1 = data.frame(id = 1:3, zmienna1 = c('​a',​ '​b',​ '​c'​)) t1 = data.frame(id = 1:3, zmienna1 = c('​a',​ '​b',​ '​c'​))
 t2 = data.frame(id = 2:4, zmienna2 = c('​x',​ '​y',​ '​z'​)) t2 = data.frame(id = 2:4, zmienna2 = c('​x',​ '​y',​ '​z'​))
 +
 anti_join(t1,​ t2) anti_join(t1,​ t2)
 # wynikiem będzie: # wynikiem będzie:
Linia 93: Linia 132:
 # id zmienna1 # id zmienna1
 #  1        a #  1        a
 +
 +setdiff(t1, t2)
 +# wynikiem będzie:
 +#
 +# BŁĄD: not compatible
 +
 +setdiff(t1 %>% select(id), t2 %>% select(id))
 +# wynikiem będzie:
 +#
 +# id
 +#  1
 +</​code>​
 +
 +===== sample_frac =====
 +
 +//​**sample_frac**(tablica,​ odsetek, czyZeZwracaniem,​ wagi)//
 +
 +  * Pozostawia w //tablicy// losowo wybrane odsetek wierszy.
 +  * Parametr określający,​ czy losować ze zwracaniem jest nieobowiązkowy. Jeśli nie zostanie określony, losowani odbędzie się bez zwracania.
 +  * Parametr określający wagi jest nieobowiązkowy. Jeśli nie zostanie określony, wszystkie wiersze będą miały równe prawdopodobieństwa wylosowania.
 +
 +==== Przykład ====
 +
 +<code rsplus>
 +dane = data.frame(x = 1:10)
 +
 +sample_frac(dane,​ 0.5)
 +# wynikiem będzie tablica o 5 wierszach, żadna wartość nie będzie się powtarzać
 +
 +sample_frac(dane,​ 0.7, TRUE)
 +# wynikiem będzie tablica o 7 wierszach, wartości mogą się powtarzać
 +
 +sample_frac(dane,​ 0.7, F, x)
 +# wynikiem będzie tablica o 7 wierszach, wartości nie będą się powtarzać, pradopodobieństwo wylosowania liczby będzie proporcjonalne do wartości liczby
 +</​code>​
 +
 +===== sample_n =====
 +
 +//​**sample_n**(tablica,​ liczbaWierszy,​ czyZeZwracaniem,​ wagi)//
 +
 +  * Pozostawia w //tablicy// losowo wybraną liczbę wierszy.
 +  * Parametr określający,​ czy losować ze zwracaniem jest nieobowiązkowy. Jeśli nie zostanie określony, losowani odbędzie się bez zwracania.
 +  * Parametr określający wagi jest nieobowiązkowy. Jeśli nie zostanie określony, wszystkie wiersze będą miały równe prawdopodobieństwa wylosowania.
 +
 +==== Przykład ====
 +
 +<code rsplus>
 +dane = data.frame(x = 1:10)
 +
 +sample_n(dane,​ 5)
 +# wynikiem będzie tablica o 5 wierszach, żadna wartość nie będzie się powtarzać
 +
 +sample_n(dane,​ 7, TRUE)
 +# wynikiem będzie tablica o 7 wierszach, wartości mogą się powtarzać
 +
 +sample_n(dane,​ 7, F, x)
 +# wynikiem będzie tablica o 7 wierszach, wartości nie będą się powtarzać, pradopodobieństwo wylosowania liczby będzie proporcjonalne do wartości liczby
 </​code>​ </​code>​
r_dplyr_wiersze.1418805989.txt.gz · ostatnio zmienione: 2014/12/17 09:46 przez zozlak