Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
dplyr 1.0.0 / Paris R-addicts
Search
Romain François
October 14, 2020
Technology
260
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
dplyr 1.0.0 / Paris R-addicts
Romain François
October 14, 2020
More Decks by Romain François
See All by Romain François
dplyr 1.0.0
romainfrancois
1
1.3k
dplyr episode 9, summarise() of the vctrs
romainfrancois
0
1k
dplyr episode 9: summarise() of the vctrs
romainfrancois
0
370
n() cool #dplyr things
romainfrancois
2
3k
dance
romainfrancois
0
310
rap and splice girls
romainfrancois
0
430
rap
romainfrancois
0
140
arrow + ergo
romainfrancois
0
400
ergo
romainfrancois
0
290
Other Decks in Technology
See All in Technology
Claude Codeを「使うほど育つ」AI秘書にするノウハウ
minorun365
PRO
33
31k
手を動かして実感する、Kiro が変える開発体験
inariku
0
230
AgentCore Runtime上にAgentic Coding基盤を構築・展開する際の設計ポイントと限界点 / Design considerations and limitations when building an agentic coding platform on AgentCore Runtime
har1101
6
730
人間はどの意思決定を手放せるのか
kawasima
15
8.1k
Harness Engineering on Rails
joelq
0
420
あけおめLINE 傾向とその対策
nasa9084
0
310
Why Agent Cost Needs Observability
nttcom
0
150
絵ではじめるKubernetesセキュリティ
aoi1
5
710
作って終わりじゃないサーバーレス 〜9年運用する大規模EC物流API基盤の設計・運用のリアル〜
zozotech
PRO
0
500
人にやさしく、AIにやさしく、書き手を選ばないIaCのガードレール再考 / Rethinking IaC Guardrails for Humans and AI Alike
kohbis
3
640
AIは推し活である。
kurazuuuuuu
1
960
aws-iot-platform-architecture-use-cases.pdf
ma2shita
0
610
Featured
See All Featured
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
290
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
580
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
GraphQLとの向き合い方2022年版
quramy
50
15k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Mind Mapping
helmedeiros
1
370
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
610
Typedesign – Prime Four
hannesfritz
42
3.2k
Transcript
Rom ain François @rom ain_francois Raddicts 2020/10/14
1.0.0 Rom ain François @rom ain_francois Raddicts 2020/10/14 @allison_horst
tidyverse.org/articles
summarise() - Plusieurs lignes - Plusieurs colonnes - across() -
Gestion des "groupes"
@allison_horst
@allison_horst Kristen Gorman Allison Horst library(palmerpenguins) glimpse(penguins) #> Rows: 344
#> Columns: 7 #> $ species <fct> Adelie, Adelie, Adelie, A #> $ island <fct> Torgersen, Torgersen, Tor #> $ bill_length_mm <dbl> 39.1, 39.5, 40.3, NA, 36. #> $ bill_depth_mm <dbl> 18.7, 17.4, 18.0, NA, 19. #> $ flipper_length_mm <int> 181, 186, 195, NA, 193, 1 #> $ body_mass_g <int> 3750, 3800, 3250, NA, 345 #> $ sex <fct> male, female, female, NA, Alison Presmanes Hill https://github.com/allisonhorst/palmerpenguins
plusieurs lignes penguins %>% group_by(species) %>% summarise( prob = c(.25,
.75), length = quantile(bill_length_mm, prob, na.rm = TRUE), depth = quantile(bill_depth_mm, prob, na.rm = TRUE) ) #> `summarise()` regrouping output by 'species' (override with `.groups` argument) #> # A tibble: 6 x 4 #> # Groups: species [3] #> species prob length depth #> <fct> <dbl> <dbl> <dbl> #> 1 Adelie 0.25 36.8 17.5 #> 2 Adelie 0.75 40.8 19 #> 3 Chinstrap 0.25 46.3 17.5 #> 4 Chinstrap 0.75 51.1 19.4 #> 5 Gentoo 0.25 45.3 14.2 #> 6 Gentoo 0.75 49.6 15.7
Plusieurs colonnes penguins %>% group_by(species) %>% summarise( data.frame( min =
min(bill_length_mm, na.rm = TRUE), max = max(bill_length_mm, na.rm = TRUE) ) ) #> `summarise()` ungrouping output (override with `.groups` argument) #> # A tibble: 3 x 3 #> species min max #> <fct> <dbl> <dbl> #> 1 Adelie 32.1 46 #> 2 Chinstrap 40.9 58 #> 3 Gentoo 40.9 59.6 * en retournant un data frame
Plusieurs colonnes * en retournant un data frame minmax <-
function(x) { data.frame( min = min(x, na.rm = TRUE), max = max(x, na.rm = TRUE) ) } penguins %>% group_by(species) %>% summarise( minmax(bill_length_mm) ) #> `summarise()` ungrouping output (override with `.groups` argument) #> # A tibble: 3 x 3 #> species min max #> <fct> <dbl> <dbl> #> 1 Adelie 32.1 46 #> 2 Chinstrap 40.9 58 #> 3 Gentoo 40.9 59.6
Plusieurs colonnes et plusieurs lignes penguins %>% group_by(species) %>% summarise(
broom::tidy(lm(bill_depth_mm ~ bill_length_mm)) ) #> `summarise()` regrouping output by 'species' (override with `.groups` argument) #> # A tibble: 6 x 6 #> # Groups: species [3] #> species term estimate std.error statistic p.value #> <fct> <chr> <dbl> <dbl> <dbl> <dbl> #> 1 Adelie (Intercept) 11.4 1.34 8.52 1.61e-14 #> 2 Adelie bill_length_mm 0.179 0.0344 5.19 6.67e- 7 #> 3 Chinstrap (Intercept) 7.57 1.55 4.88 6.99e- 6 #> 4 Chinstrap bill_length_mm 0.222 0.0317 7.01 1.53e- 9 #> 5 Gentoo (Intercept) 5.25 1.05 4.98 2.15e- 6 #> 6 Gentoo bill_length_mm 0.205 0.0222 9.24 1.02e-15
across()
across(<selection> , <action> ) penguins %>% group_by(species) %>% summarise( across(starts_with("bill"),
min, na.rm = TRUE) ) #> `summarise()` ungrouping output (override with `.groups` argument) #> # A tibble: 3 x 3 #> species bill_length_mm bill_depth_mm #> <fct> <dbl> <dbl> #> 1 Adelie 32.1 15.5 #> 2 Chinstrap 40.9 16.4 #> 3 Gentoo 40.9 13.1
penguins %>% group_by(species) %>% summarise( across(starts_with("bill"), list(min = min, max
= max), na.rm = TRUE ) ) #> `summarise()` ungrouping output (override with `.groups` argument) #> # A tibble: 3 x 5 #> species bill_length_mm_min bill_length_mm_max bill_depth_mm_min bill_depth_mm_max #> <fct> <dbl> <dbl> <dbl> <dbl> #> 1 Adelie 32.1 46 15.5 21.5 #> 2 Chinstrap 40.9 58 16.4 20.8 #> 3 Gentoo 40.9 59.6 13.1 17.3 across(<selection> , <actions> )
penguins %>% group_by(species) %>% summarise( across(starts_with("bill"), list(min = min, max
= max), na.rm = TRUE, .names = "{.fn}_{.col}" ) ) #> `summarise()` ungrouping output (override with `.groups` argument) #> # A tibble: 3 x 5 #> species min_bill_length_mm max_bill_length_mm min_bill_depth_mm max_bill_depth_mm #> <fct> <dbl> <dbl> <dbl> <dbl> #> 1 Adelie 32.1 46 15.5 21.5 #> 2 Chinstrap 40.9 58 16.4 20.8 #> 3 Gentoo 40.9 59.6 13.1 17.3 across(<selection> , <actions> ) + contrôle des noms
summarise(.groups = )
penguins %>% group_by(species, island) %>% summarise( prob = c(.25, .75),
length = quantile(bill_length_mm, prob, na.rm = TRUE), depth = quantile(bill_depth_mm, prob, na.rm = TRUE) ) Du coup c'est groupé comment ?
Ah, et là, c'est groupé comment ? penguins %>% group_by(species,
island) %>% summarise( length = mean(bill_length_mm, na.rm = TRUE), depth = mean(bill_depth_mm, na.rm = TRUE) )
penguins %>% group_by(species, island) %>% summarise( prob = c(.25, .75),
length = quantile(bill_length_mm, prob, na.rm = TRUE), depth = quantile(bill_depth_mm, prob, na.rm = TRUE) ) #> `summarise()` regrouping output by 'species', 'island' (override with `.groups` argument) #> # A tibble: 10 x 5 #> # Groups: species, island [5] #> species island prob length depth #> <fct> <fct> <dbl> <dbl> <dbl> #> 1 Adelie Biscoe 0.25 37.7 17.6 #> 2 Adelie Biscoe 0.75 40.7 19.0 #> 3 Adelie Dream 0.25 36.8 17.5 #> 4 Adelie Dream 0.75 40.4 18.8 #> 5 Adelie Torgersen 0.25 36.7 17.4 #> 6 Adelie Torgersen 0.75 41.1 19.2 #> 7 Chinstrap Dream 0.25 46.3 17.5 #> 8 Chinstrap Dream 0.75 51.1 19.4 #> 9 Gentoo Biscoe 0.25 45.3 14.2 #> 10 Gentoo Biscoe 0.75 49.6 15.7 Plus d'une ligne -> on garde
penguins %>% group_by(species, island) %>% summarise( length = mean(bill_length_mm, na.rm
= TRUE), depth = mean(bill_depth_mm, na.rm = TRUE) ) #> `summarise()` regrouping output by 'species' (override with `.groups` argument) #> # A tibble: 5 x 4 #> # Groups: species [3] #> species island length depth #> <fct> <fct> <dbl> <dbl> #> 1 Adelie Biscoe 39.0 18.4 #> 2 Adelie Dream 38.5 18.3 #> 3 Adelie Torgersen 39.0 18.4 #> 4 Chinstrap Dream 48.8 18.4 #> 5 Gentoo Biscoe 47.5 15.0 Une seule ligne -> on épluche
Mouais, mais c'est quoi ces messages ? ... et comment
je m'en débarrasse ?
penguins %>% group_by(species, island) %>% summarise(.groups = "drop", length =
mean(bill_length_mm, na.rm = TRUE), depth = mean(bill_depth_mm, na.rm = TRUE) ) #> # A tibble: 5 x 4 #> species island length depth #> <fct> <fct> <dbl> <dbl> #> 1 Adelie Biscoe 39.0 18.4 #> 2 Adelie Dream 38.5 18.3 #> 3 Adelie Torgersen 39.0 18.4 #> 4 Chinstrap Dream 48.8 18.4 #> 5 Gentoo Biscoe 47.5 15.0 summarise(.groups = "drop")
penguins %>% group_by(species, island) %>% summarise(.groups = "keep", length =
mean(bill_length_mm, na.rm = TRUE), depth = mean(bill_depth_mm, na.rm = TRUE) ) #> # A tibble: 5 x 4 #> # Groups: species, island [5] #> species island length depth #> <fct> <fct> <dbl> <dbl> #> 1 Adelie Biscoe 39.0 18.4 #> 2 Adelie Dream 38.5 18.3 #> 3 Adelie Torgersen 39.0 18.4 #> 4 Chinstrap Dream 48.8 18.4 #> 5 Gentoo Biscoe 47.5 15.0 summarise(.groups = "keep")
summarise(.groups = "drop_last") penguins %>% group_by(species, island) %>% summarise(.groups =
"drop_last", length = mean(bill_length_mm, na.rm = TRUE), depth = mean(bill_depth_mm, na.rm = TRUE) ) #> # A tibble: 5 x 4 #> # Groups: species [3] #> species island length depth #> <fct> <fct> <dbl> <dbl> #> 1 Adelie Biscoe 39.0 18.4 #> 2 Adelie Dream 38.5 18.3 #> 3 Adelie Torgersen 39.0 18.4 #> 4 Chinstrap Dream 48.8 18.4 #> 5 Gentoo Biscoe 47.5 15.0
1.0.0 Rom ain François @rom ain_francois Raddicts 2020/10/14 @allison_horst