1413 lines
		
	
	
		
			80 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			1413 lines
		
	
	
		
			80 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE html>
 | ||
| <html lang="zh-Hans"><head>
 | ||
| <script src="../../site_libs/clipboard/clipboard.min.js"></script>
 | ||
| <script src="../../site_libs/quarto-html/tabby.min.js"></script>
 | ||
| <script src="../../site_libs/quarto-html/popper.min.js"></script>
 | ||
| <script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
 | ||
| <link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
 | ||
| <link href="../../site_libs/quarto-html/light-border.css" rel="stylesheet">
 | ||
| <link href="../../site_libs/quarto-html/quarto-syntax-highlighting-dark-31d8df3fb4b3ebd213a509f950828e75.css" rel="stylesheet" id="quarto-text-highlighting-styles"><meta charset="utf-8">
 | ||
|   <meta name="generator" content="quarto-1.7.1">
 | ||
| 
 | ||
|   <meta name="author" content="苏命、王为东 中国科学院大学资源与环境学院 中国科学院生态环境研究中心">
 | ||
|   <meta name="dcterms.date" content="2025-03-17">
 | ||
|   <title>Version: {{< var branch >}} – Data Transform</title>
 | ||
|   <meta name="apple-mobile-web-app-capable" content="yes">
 | ||
|   <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
 | ||
|   <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
 | ||
|   <link rel="stylesheet" href="../../site_libs/revealjs/dist/reset.css">
 | ||
|   <link rel="stylesheet" href="../../site_libs/revealjs/dist/reveal.css">
 | ||
|   <style>
 | ||
|     code{white-space: pre-wrap;}
 | ||
|     span.smallcaps{font-variant: small-caps;}
 | ||
|     div.columns{display: flex; gap: min(4vw, 1.5em);}
 | ||
|     div.column{flex: auto; overflow-x: auto;}
 | ||
|     div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
 | ||
|     ul.task-list{list-style: none;}
 | ||
|     ul.task-list li input[type="checkbox"] {
 | ||
|       width: 0.8em;
 | ||
|       margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */ 
 | ||
|       vertical-align: middle;
 | ||
|     }
 | ||
|     /* CSS for syntax highlighting */
 | ||
|     pre > code.sourceCode { white-space: pre; position: relative; }
 | ||
|     pre > code.sourceCode > span { line-height: 1.25; }
 | ||
|     pre > code.sourceCode > span:empty { height: 1.2em; }
 | ||
|     .sourceCode { overflow: visible; }
 | ||
|     code.sourceCode > span { color: inherit; text-decoration: inherit; }
 | ||
|     div.sourceCode { margin: 1em 0; }
 | ||
|     pre.sourceCode { margin: 0; }
 | ||
|     @media screen {
 | ||
|     div.sourceCode { overflow: auto; }
 | ||
|     }
 | ||
|     @media print {
 | ||
|     pre > code.sourceCode { white-space: pre-wrap; }
 | ||
|     pre > code.sourceCode > span { display: inline-block; text-indent: -5em; padding-left: 5em; }
 | ||
|     }
 | ||
|     pre.numberSource code
 | ||
|       { counter-reset: source-line 0; }
 | ||
|     pre.numberSource code > span
 | ||
|       { position: relative; left: -4em; counter-increment: source-line; }
 | ||
|     pre.numberSource code > span > a:first-child::before
 | ||
|       { content: counter(source-line);
 | ||
|         position: relative; left: -1em; text-align: right; vertical-align: baseline;
 | ||
|         border: none; display: inline-block;
 | ||
|         -webkit-touch-callout: none; -webkit-user-select: none;
 | ||
|         -khtml-user-select: none; -moz-user-select: none;
 | ||
|         -ms-user-select: none; user-select: none;
 | ||
|         padding: 0 4px; width: 4em;
 | ||
|       }
 | ||
|     pre.numberSource { margin-left: 3em;  padding-left: 4px; }
 | ||
|     div.sourceCode
 | ||
|       { color: #f8f8f2;  }
 | ||
|     @media screen {
 | ||
|     pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
 | ||
|     }
 | ||
|     code span { color: #f8f8f2; } /* Normal */
 | ||
|     code span.al { color: #f07178; background-color: #2a0f15; font-weight: bold; } /* Alert */
 | ||
|     code span.an { color: #d4d0ab; } /* Annotation */
 | ||
|     code span.at { color: #00e0e0; } /* Attribute */
 | ||
|     code span.bn { color: #d4d0ab; } /* BaseN */
 | ||
|     code span.bu { color: #abe338; } /* BuiltIn */
 | ||
|     code span.cf { color: #ffa07a; font-weight: bold; } /* ControlFlow */
 | ||
|     code span.ch { color: #abe338; } /* Char */
 | ||
|     code span.cn { color: #ffd700; } /* Constant */
 | ||
|     code span.co { color: #f8f8f2; font-style: italic; } /* Comment */
 | ||
|     code span.cv { color: #ffd700; } /* CommentVar */
 | ||
|     code span.do { color: #f8f8f2; } /* Documentation */
 | ||
|     code span.dt { color: #ffa07a; } /* DataType */
 | ||
|     code span.dv { color: #d4d0ab; } /* DecVal */
 | ||
|     code span.er { color: #f07178; text-decoration: underline; } /* Error */
 | ||
|     code span.ex { color: #00e0e0; font-weight: bold; } /* Extension */
 | ||
|     code span.fl { color: #d4d0ab; } /* Float */
 | ||
|     code span.fu { color: #ffa07a; } /* Function */
 | ||
|     code span.im { color: #abe338; } /* Import */
 | ||
|     code span.in { color: #d4d0ab; } /* Information */
 | ||
|     code span.kw { color: #ffa07a; font-weight: bold; } /* Keyword */
 | ||
|     code span.op { color: #ffa07a; } /* Operator */
 | ||
|     code span.ot { color: #00e0e0; } /* Other */
 | ||
|     code span.pp { color: #dcc6e0; } /* Preprocessor */
 | ||
|     code span.re { color: #00e0e0; background-color: #f8f8f2; } /* RegionMarker */
 | ||
|     code span.sc { color: #abe338; } /* SpecialChar */
 | ||
|     code span.ss { color: #abe338; } /* SpecialString */
 | ||
|     code span.st { color: #abe338; } /* String */
 | ||
|     code span.va { color: #00e0e0; } /* Variable */
 | ||
|     code span.vs { color: #abe338; } /* VerbatimString */
 | ||
|     code span.wa { color: #dcc6e0; } /* Warning */
 | ||
|   </style>
 | ||
|   <link rel="stylesheet" href="../../site_libs/revealjs/dist/theme/quarto-5b48f34d633aed70c74c672477009ffc.css">
 | ||
|   <link rel="stylesheet" href="./_extensions/inst/css/revealjs.css">
 | ||
|   <link href="../../site_libs/revealjs/plugin/quarto-line-highlight/line-highlight.css" rel="stylesheet">
 | ||
|   <link href="../../site_libs/revealjs/plugin/reveal-menu/menu.css" rel="stylesheet">
 | ||
|   <link href="../../site_libs/revealjs/plugin/reveal-menu/quarto-menu.css" rel="stylesheet">
 | ||
|   <link href="../../site_libs/revealjs/plugin/reveal-chalkboard/font-awesome/css/all.css" rel="stylesheet">
 | ||
|   <link href="../../site_libs/revealjs/plugin/reveal-chalkboard/style.css" rel="stylesheet">
 | ||
|   <link href="../../site_libs/revealjs/plugin/reveal-pointer/pointer.css" rel="stylesheet">
 | ||
|   <link href="../../site_libs/revealjs/plugin/quarto-support/footer.css" rel="stylesheet">
 | ||
|   <script type="application/json" class="js-hypothesis-config">
 | ||
|   {
 | ||
|     "theme": "clean",
 | ||
|     "openSidebar": false
 | ||
|   }
 | ||
|   </script>
 | ||
|   <script async="" src="https://hypothes.is/embed.js"></script>
 | ||
|   <script>
 | ||
|     window.document.addEventListener("DOMContentLoaded", function (_event) {
 | ||
|       document.body.classList.add('hypothesis-enabled');
 | ||
|     });
 | ||
|   </script>
 | ||
|   <style type="text/css">
 | ||
|     .reveal div.sourceCode {
 | ||
|       margin: 0;
 | ||
|       overflow: auto;
 | ||
|     }
 | ||
|     .reveal div.hanging-indent {
 | ||
|       margin-left: 1em;
 | ||
|       text-indent: -1em;
 | ||
|     }
 | ||
|     .reveal .slide:not(.center) {
 | ||
|       height: 100%;
 | ||
|     }
 | ||
|     .reveal .slide.scrollable {
 | ||
|       overflow-y: auto;
 | ||
|     }
 | ||
|     .reveal .footnotes {
 | ||
|       height: 100%;
 | ||
|       overflow-y: auto;
 | ||
|     }
 | ||
|     .reveal .slide .absolute {
 | ||
|       position: absolute;
 | ||
|       display: block;
 | ||
|     }
 | ||
|     .reveal .footnotes ol {
 | ||
|       counter-reset: ol;
 | ||
|       list-style-type: none; 
 | ||
|       margin-left: 0;
 | ||
|     }
 | ||
|     .reveal .footnotes ol li:before {
 | ||
|       counter-increment: ol;
 | ||
|       content: counter(ol) ". "; 
 | ||
|     }
 | ||
|     .reveal .footnotes ol li > p:first-child {
 | ||
|       display: inline-block;
 | ||
|     }
 | ||
|     .reveal .slide ul,
 | ||
|     .reveal .slide ol {
 | ||
|       margin-bottom: 0.5em;
 | ||
|     }
 | ||
|     .reveal .slide ul li,
 | ||
|     .reveal .slide ol li {
 | ||
|       margin-top: 0.4em;
 | ||
|       margin-bottom: 0.2em;
 | ||
|     }
 | ||
|     .reveal .slide ul[role="tablist"] li {
 | ||
|       margin-bottom: 0;
 | ||
|     }
 | ||
|     .reveal .slide ul li > *:first-child,
 | ||
|     .reveal .slide ol li > *:first-child {
 | ||
|       margin-block-start: 0;
 | ||
|     }
 | ||
|     .reveal .slide ul li > *:last-child,
 | ||
|     .reveal .slide ol li > *:last-child {
 | ||
|       margin-block-end: 0;
 | ||
|     }
 | ||
|     .reveal .slide .columns:nth-child(3) {
 | ||
|       margin-block-start: 0.8em;
 | ||
|     }
 | ||
|     .reveal blockquote {
 | ||
|       box-shadow: none;
 | ||
|     }
 | ||
|     .reveal .tippy-content>* {
 | ||
|       margin-top: 0.2em;
 | ||
|       margin-bottom: 0.7em;
 | ||
|     }
 | ||
|     .reveal .tippy-content>*:last-child {
 | ||
|       margin-bottom: 0.2em;
 | ||
|     }
 | ||
|     .reveal .slide > img.stretch.quarto-figure-center,
 | ||
|     .reveal .slide > img.r-stretch.quarto-figure-center {
 | ||
|       display: block;
 | ||
|       margin-left: auto;
 | ||
|       margin-right: auto; 
 | ||
|     }
 | ||
|     .reveal .slide > img.stretch.quarto-figure-left,
 | ||
|     .reveal .slide > img.r-stretch.quarto-figure-left  {
 | ||
|       display: block;
 | ||
|       margin-left: 0;
 | ||
|       margin-right: auto; 
 | ||
|     }
 | ||
|     .reveal .slide > img.stretch.quarto-figure-right,
 | ||
|     .reveal .slide > img.r-stretch.quarto-figure-right  {
 | ||
|       display: block;
 | ||
|       margin-left: auto;
 | ||
|       margin-right: 0; 
 | ||
|     }
 | ||
|   </style>
 | ||
| </head>
 | ||
| <body class="quarto-dark">
 | ||
|   <div class="reveal">
 | ||
|     <div class="slides">
 | ||
| 
 | ||
| <section id="title-slide" class="quarto-title-block center">
 | ||
|   <h1 class="title">Data Transform</h1>
 | ||
|   <p class="subtitle">《区域水环境污染数据分析实践》<br>Data analysis practice of regional water environment pollution</p>
 | ||
| 
 | ||
| <div class="quarto-title-authors">
 | ||
| <div class="quarto-title-author">
 | ||
| <div class="quarto-title-author-name">
 | ||
| 苏命、王为东<br>中国科学院大学资源与环境学院<br>中国科学院生态环境研究中心 
 | ||
| </div>
 | ||
| </div>
 | ||
| </div>
 | ||
| 
 | ||
|   <p class="date">2025-03-17</p>
 | ||
| </section>
 | ||
| <section id="tidyverse风格数据分析总体流程" class="slide level2">
 | ||
| <h2><code>tidyverse</code>风格数据分析总体流程</h2>
 | ||
| 
 | ||
| <img data-src="../../image/data-science/transform.png" class="r-stretch"></section>
 | ||
| <section id="dplyr-cheatsheet" class="slide level2">
 | ||
| <h2><a href="../../image/cheatsheet/data-transformation.pdf">dplyr cheatsheet</a></h2>
 | ||
| 
 | ||
| <img data-src="../../image/cheatsheet/data-transformation.svg" class="r-stretch"></section>
 | ||
| <section id="查看数据" class="slide level2">
 | ||
| <h2>查看数据</h2>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb1"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb1-1"><a></a>flights</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 336,776 × 19
 | ||
|     year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
 | ||
|    <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 | ||
|  1  2013     1     1      517            515         2      830            819
 | ||
|  2  2013     1     1      533            529         4      850            830
 | ||
|  3  2013     1     1      542            540         2      923            850
 | ||
|  4  2013     1     1      544            545        -1     1004           1022
 | ||
|  5  2013     1     1      554            600        -6      812            837
 | ||
|  6  2013     1     1      554            558        -4      740            728
 | ||
|  7  2013     1     1      555            600        -5      913            854
 | ||
|  8  2013     1     1      557            600        -3      709            723
 | ||
|  9  2013     1     1      557            600        -3      838            846
 | ||
| 10  2013     1     1      558            600        -2      753            745
 | ||
| # ℹ 336,766 more rows
 | ||
| # ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
 | ||
| #   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
 | ||
| #   hour <dbl>, minute <dbl>, time_hour <dttm></code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="选择列" class="slide level2">
 | ||
| <h2>选择列</h2>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb3"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb3-1"><a></a>flights <span class="sc">|></span> </span>
 | ||
| <span id="cb3-2"><a></a>  <span class="fu">select</span>(year, month, day)</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="选择列-1" class="slide level2">
 | ||
| <h2>选择列</h2>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb4"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb4-1"><a></a>flights <span class="sc">|></span> </span>
 | ||
| <span id="cb4-2"><a></a>  <span class="fu">select</span>(year<span class="sc">:</span>day)</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="选择列-2" class="slide level2">
 | ||
| <h2>选择列</h2>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb5"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb5-1"><a></a>flights <span class="sc">|></span> </span>
 | ||
| <span id="cb5-2"><a></a><span class="fu">select</span>(<span class="dv">3</span><span class="sc">:</span><span class="dv">5</span>)</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 336,776 × 3
 | ||
|      day dep_time sched_dep_time
 | ||
|    <int>    <int>          <int>
 | ||
|  1     1      517            515
 | ||
|  2     1      533            529
 | ||
|  3     1      542            540
 | ||
|  4     1      544            545
 | ||
|  5     1      554            600
 | ||
|  6     1      554            558
 | ||
|  7     1      555            600
 | ||
|  8     1      557            600
 | ||
|  9     1      557            600
 | ||
| 10     1      558            600
 | ||
| # ℹ 336,766 more rows</code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="选择列-3" class="slide level2">
 | ||
| <h2>选择列</h2>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb7"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb7-1"><a></a>flights <span class="sc">|></span> </span>
 | ||
| <span id="cb7-2"><a></a>  <span class="fu">select</span>(<span class="sc">!</span>year<span class="sc">:</span>day)</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 336,776 × 16
 | ||
|    dep_time sched_dep_time dep_delay arr_time sched_arr_time arr_delay carrier
 | ||
|       <int>          <int>     <dbl>    <int>          <int>     <dbl> <chr>  
 | ||
|  1      517            515         2      830            819        11 UA     
 | ||
|  2      533            529         4      850            830        20 UA     
 | ||
|  3      542            540         2      923            850        33 AA     
 | ||
|  4      544            545        -1     1004           1022       -18 B6     
 | ||
|  5      554            600        -6      812            837       -25 DL     
 | ||
|  6      554            558        -4      740            728        12 UA     
 | ||
|  7      555            600        -5      913            854        19 B6     
 | ||
|  8      557            600        -3      709            723       -14 EV     
 | ||
|  9      557            600        -3      838            846        -8 B6     
 | ||
| 10      558            600        -2      753            745         8 AA     
 | ||
| # ℹ 336,766 more rows
 | ||
| # ℹ 9 more variables: flight <int>, tailnum <chr>, origin <chr>, dest <chr>,
 | ||
| #   air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm></code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="选择列-4" class="slide level2">
 | ||
| <h2>选择列</h2>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb9"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb9-1"><a></a>flights <span class="sc">|></span> </span>
 | ||
| <span id="cb9-2"><a></a>  <span class="fu">select</span>(<span class="sc">-</span>(year<span class="sc">:</span>day))</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 336,776 × 16
 | ||
|    dep_time sched_dep_time dep_delay arr_time sched_arr_time arr_delay carrier
 | ||
|       <int>          <int>     <dbl>    <int>          <int>     <dbl> <chr>  
 | ||
|  1      517            515         2      830            819        11 UA     
 | ||
|  2      533            529         4      850            830        20 UA     
 | ||
|  3      542            540         2      923            850        33 AA     
 | ||
|  4      544            545        -1     1004           1022       -18 B6     
 | ||
|  5      554            600        -6      812            837       -25 DL     
 | ||
|  6      554            558        -4      740            728        12 UA     
 | ||
|  7      555            600        -5      913            854        19 B6     
 | ||
|  8      557            600        -3      709            723       -14 EV     
 | ||
|  9      557            600        -3      838            846        -8 B6     
 | ||
| 10      558            600        -2      753            745         8 AA     
 | ||
| # ℹ 336,766 more rows
 | ||
| # ℹ 9 more variables: flight <int>, tailnum <chr>, origin <chr>, dest <chr>,
 | ||
| #   air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm></code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="选择列-5" class="slide level2">
 | ||
| <h2>选择列</h2>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb11"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb11-1"><a></a>flights <span class="sc">|></span> </span>
 | ||
| <span id="cb11-2"><a></a>  <span class="fu">select</span>(<span class="fu">where</span>(is.character))</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 336,776 × 4
 | ||
|    carrier tailnum origin dest 
 | ||
|    <chr>   <chr>   <chr>  <chr>
 | ||
|  1 UA      N14228  EWR    IAH  
 | ||
|  2 UA      N24211  LGA    IAH  
 | ||
|  3 AA      N619AA  JFK    MIA  
 | ||
|  4 B6      N804JB  JFK    BQN  
 | ||
|  5 DL      N668DN  LGA    ATL  
 | ||
|  6 UA      N39463  EWR    ORD  
 | ||
|  7 B6      N516JB  EWR    FLL  
 | ||
|  8 EV      N829AS  LGA    IAD  
 | ||
|  9 B6      N593JB  JFK    MCO  
 | ||
| 10 AA      N3ALAA  LGA    ORD  
 | ||
| # ℹ 336,766 more rows</code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="选择列-6" class="slide level2">
 | ||
| <h2>选择列</h2>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb13"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb13-1"><a></a>flights <span class="sc">|></span> </span>
 | ||
| <span id="cb13-2"><a></a>  <span class="fu">select</span>(<span class="sc">!</span><span class="fu">where</span>(is.character)) <span class="sc">|></span></span>
 | ||
| <span id="cb13-3"><a></a>  <span class="fu">select</span>(<span class="fu">contains</span>(<span class="st">"_"</span>))</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 336,776 × 8
 | ||
|    dep_time sched_dep_time dep_delay arr_time sched_arr_time arr_delay air_time
 | ||
|       <int>          <int>     <dbl>    <int>          <int>     <dbl>    <dbl>
 | ||
|  1      517            515         2      830            819        11      227
 | ||
|  2      533            529         4      850            830        20      227
 | ||
|  3      542            540         2      923            850        33      160
 | ||
|  4      544            545        -1     1004           1022       -18      183
 | ||
|  5      554            600        -6      812            837       -25      116
 | ||
|  6      554            558        -4      740            728        12      150
 | ||
|  7      555            600        -5      913            854        19      158
 | ||
|  8      557            600        -3      709            723       -14       53
 | ||
|  9      557            600        -3      838            846        -8      140
 | ||
| 10      558            600        -2      753            745         8      138
 | ||
| # ℹ 336,766 more rows
 | ||
| # ℹ 1 more variable: time_hour <dttm></code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="选择列-7" class="slide level2">
 | ||
| <h2>选择列</h2>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb15"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb15-1"><a></a>flights <span class="sc">|></span> </span>
 | ||
| <span id="cb15-2"><a></a>  <span class="fu">select</span>(<span class="at">tail_num =</span> tailnum)</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 336,776 × 1
 | ||
|    tail_num
 | ||
|    <chr>   
 | ||
|  1 N14228  
 | ||
|  2 N24211  
 | ||
|  3 N619AA  
 | ||
|  4 N804JB  
 | ||
|  5 N668DN  
 | ||
|  6 N39463  
 | ||
|  7 N516JB  
 | ||
|  8 N829AS  
 | ||
|  9 N593JB  
 | ||
| 10 N3ALAA  
 | ||
| # ℹ 336,766 more rows</code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="选择列-8" class="slide level2">
 | ||
| <h2>选择列</h2>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb17"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb17-1"><a></a>flights <span class="sc">|></span> </span>
 | ||
| <span id="cb17-2"><a></a>  <span class="fu">select</span>(air_time, <span class="fu">everything</span>())</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 336,776 × 19
 | ||
|    air_time  year month   day dep_time sched_dep_time dep_delay arr_time
 | ||
|       <dbl> <int> <int> <int>    <int>          <int>     <dbl>    <int>
 | ||
|  1      227  2013     1     1      517            515         2      830
 | ||
|  2      227  2013     1     1      533            529         4      850
 | ||
|  3      160  2013     1     1      542            540         2      923
 | ||
|  4      183  2013     1     1      544            545        -1     1004
 | ||
|  5      116  2013     1     1      554            600        -6      812
 | ||
|  6      150  2013     1     1      554            558        -4      740
 | ||
|  7      158  2013     1     1      555            600        -5      913
 | ||
|  8       53  2013     1     1      557            600        -3      709
 | ||
|  9      140  2013     1     1      557            600        -3      838
 | ||
| 10      138  2013     1     1      558            600        -2      753
 | ||
| # ℹ 336,766 more rows
 | ||
| # ℹ 11 more variables: sched_arr_time <int>, arr_delay <dbl>, carrier <chr>,
 | ||
| #   flight <int>, tailnum <chr>, origin <chr>, dest <chr>, distance <dbl>,
 | ||
| #   hour <dbl>, minute <dbl>, time_hour <dttm></code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="重命名" class="slide level2">
 | ||
| <h2>重命名</h2>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb19"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb19-1"><a></a>flights <span class="sc">|></span> </span>
 | ||
| <span id="cb19-2"><a></a>  <span class="fu">rename</span>(<span class="at">tail_num =</span> tailnum)</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 336,776 × 19
 | ||
|     year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
 | ||
|    <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 | ||
|  1  2013     1     1      517            515         2      830            819
 | ||
|  2  2013     1     1      533            529         4      850            830
 | ||
|  3  2013     1     1      542            540         2      923            850
 | ||
|  4  2013     1     1      544            545        -1     1004           1022
 | ||
|  5  2013     1     1      554            600        -6      812            837
 | ||
|  6  2013     1     1      554            558        -4      740            728
 | ||
|  7  2013     1     1      555            600        -5      913            854
 | ||
|  8  2013     1     1      557            600        -3      709            723
 | ||
|  9  2013     1     1      557            600        -3      838            846
 | ||
| 10  2013     1     1      558            600        -2      753            745
 | ||
| # ℹ 336,766 more rows
 | ||
| # ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
 | ||
| #   tail_num <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
 | ||
| #   hour <dbl>, minute <dbl>, time_hour <dttm></code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="重命名-1" class="slide level2">
 | ||
| <h2>重命名</h2>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb21"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb21-1"><a></a>flights <span class="sc">|></span> </span>
 | ||
| <span id="cb21-2"><a></a>  <span class="fu">rename</span>(年份 <span class="ot">=</span> <span class="dv">1</span>) <span class="sc">|></span></span>
 | ||
| <span id="cb21-3"><a></a>  <span class="fu">rename</span>(月份 <span class="ot">=</span> <span class="dv">2</span>)</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 336,776 × 19
 | ||
|     年份  月份   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
 | ||
|    <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 | ||
|  1  2013     1     1      517            515         2      830            819
 | ||
|  2  2013     1     1      533            529         4      850            830
 | ||
|  3  2013     1     1      542            540         2      923            850
 | ||
|  4  2013     1     1      544            545        -1     1004           1022
 | ||
|  5  2013     1     1      554            600        -6      812            837
 | ||
|  6  2013     1     1      554            558        -4      740            728
 | ||
|  7  2013     1     1      555            600        -5      913            854
 | ||
|  8  2013     1     1      557            600        -3      709            723
 | ||
|  9  2013     1     1      557            600        -3      838            846
 | ||
| 10  2013     1     1      558            600        -2      753            745
 | ||
| # ℹ 336,766 more rows
 | ||
| # ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
 | ||
| #   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
 | ||
| #   hour <dbl>, minute <dbl>, time_hour <dttm></code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="重命名-2" class="slide level2">
 | ||
| <h2>重命名</h2>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb23"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb23-1"><a></a>flights <span class="sc">|></span> <span class="fu">select</span>(<span class="dv">1</span><span class="sc">:</span><span class="dv">4</span>) <span class="sc">|></span> <span class="fu">head</span>(<span class="at">n =</span> <span class="dv">3</span>)</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 3 × 4
 | ||
|    year month   day dep_time
 | ||
|   <int> <int> <int>    <int>
 | ||
| 1  2013     1     1      517
 | ||
| 2  2013     1     1      533
 | ||
| 3  2013     1     1      542</code></pre>
 | ||
| </div>
 | ||
| <div class="sourceCode cell-code" id="cb25"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb25-1"><a></a><span class="co"># 重命名</span></span>
 | ||
| <span id="cb25-2"><a></a>flights <span class="sc">|></span> <span class="fu">select</span>(<span class="dv">1</span><span class="sc">:</span><span class="dv">4</span>) <span class="sc">|></span> <span class="fu">head</span>(<span class="at">n =</span> <span class="dv">3</span>) <span class="sc">|></span></span>
 | ||
| <span id="cb25-3"><a></a>  <span class="fu">rename_all</span>(<span class="sc">~</span><span class="fu">c</span>(<span class="st">"c1"</span>, <span class="st">"c2"</span>, <span class="st">"c3"</span>, <span class="st">"c4"</span>))</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 3 × 4
 | ||
|      c1    c2    c3    c4
 | ||
|   <int> <int> <int> <int>
 | ||
| 1  2013     1     1   517
 | ||
| 2  2013     1     1   533
 | ||
| 3  2013     1     1   542</code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="重命名-3" class="slide level2">
 | ||
| <h2>重命名</h2>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb27"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb27-1"><a></a>flights <span class="sc">|></span> <span class="fu">select</span>(<span class="dv">1</span><span class="sc">:</span><span class="dv">4</span>) <span class="sc">|></span> <span class="fu">head</span>(<span class="at">n =</span> <span class="dv">3</span>)</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 3 × 4
 | ||
|    year month   day dep_time
 | ||
|   <int> <int> <int>    <int>
 | ||
| 1  2013     1     1      517
 | ||
| 2  2013     1     1      533
 | ||
| 3  2013     1     1      542</code></pre>
 | ||
| </div>
 | ||
| <div class="sourceCode cell-code" id="cb29"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb29-1"><a></a><span class="co"># 重命名</span></span>
 | ||
| <span id="cb29-2"><a></a>flights <span class="sc">|></span> <span class="fu">select</span>(<span class="dv">1</span><span class="sc">:</span><span class="dv">4</span>) <span class="sc">|></span> <span class="fu">head</span>(<span class="at">n =</span> <span class="dv">3</span>) <span class="sc">|></span></span>
 | ||
| <span id="cb29-3"><a></a>  <span class="fu">rename_all</span>(toupper)</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 3 × 4
 | ||
|    YEAR MONTH   DAY DEP_TIME
 | ||
|   <int> <int> <int>    <int>
 | ||
| 1  2013     1     1      517
 | ||
| 2  2013     1     1      533
 | ||
| 3  2013     1     1      542</code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="重命名-4" class="slide level2">
 | ||
| <h2>重命名</h2>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb31"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb31-1"><a></a>flights <span class="sc">|></span> <span class="fu">select</span>(<span class="dv">1</span><span class="sc">:</span><span class="dv">4</span>) <span class="sc">|></span> <span class="fu">head</span>(<span class="at">n =</span> <span class="dv">3</span>)</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 3 × 4
 | ||
|    year month   day dep_time
 | ||
|   <int> <int> <int>    <int>
 | ||
| 1  2013     1     1      517
 | ||
| 2  2013     1     1      533
 | ||
| 3  2013     1     1      542</code></pre>
 | ||
| </div>
 | ||
| <div class="sourceCode cell-code" id="cb33"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb33-1"><a></a><span class="co"># 重命名</span></span>
 | ||
| <span id="cb33-2"><a></a>flights <span class="sc">|></span> <span class="fu">select</span>(<span class="dv">1</span><span class="sc">:</span><span class="dv">4</span>) <span class="sc">|></span> <span class="fu">head</span>(<span class="at">n =</span> <span class="dv">3</span>) <span class="sc">|></span></span>
 | ||
| <span id="cb33-3"><a></a>  <span class="fu">rename_all</span>(<span class="sc">~</span><span class="fu">paste0</span>(<span class="fu">toupper</span>(.), <span class="st">"_NEW"</span>))</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 3 × 4
 | ||
|   YEAR_NEW MONTH_NEW DAY_NEW DEP_TIME_NEW
 | ||
|      <int>     <int>   <int>        <int>
 | ||
| 1     2013         1       1          517
 | ||
| 2     2013         1       1          533
 | ||
| 3     2013         1       1          542</code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="练习" class="slide level2">
 | ||
| <h2>练习</h2>
 | ||
| <p>将含有下划线的列名中的下划线去掉。</p>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb35"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb35-1"><a></a>flights <span class="sc">|></span> <span class="fu">select</span>(<span class="dv">1</span><span class="sc">:</span><span class="dv">4</span>) <span class="sc">|></span> <span class="fu">head</span>(<span class="at">n =</span> <span class="dv">3</span>)</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 3 × 4
 | ||
|    year month   day dep_time
 | ||
|   <int> <int> <int>    <int>
 | ||
| 1  2013     1     1      517
 | ||
| 2  2013     1     1      533
 | ||
| 3  2013     1     1      542</code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="练习-1" class="slide level2">
 | ||
| <h2>练习</h2>
 | ||
| <p>将<code>airqualitydf</code>中列名的单位信息去除(前5列)。</p>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb37"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb37-1"><a></a>airqualitydf <span class="ot"><-</span> readxl<span class="sc">::</span><span class="fu">read_xlsx</span>(<span class="st">"../../data/airquality.xlsx"</span>, <span class="at">sheet =</span> <span class="dv">2</span>)</span>
 | ||
| <span id="cb37-2"><a></a>airqualitydf <span class="sc">|></span> <span class="fu">select</span>(<span class="dv">1</span><span class="sc">:</span><span class="dv">5</span>)</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 20,088 × 5
 | ||
|    datetime            site  `CO_mg/m3` `CO_24h_mg/m3` `NO2_μg/m3`
 | ||
|    <dttm>              <chr>      <dbl>          <dbl>       <dbl>
 | ||
|  1 2024-03-19 01:00:00 1001A        0.1            0.4           5
 | ||
|  2 2024-03-19 01:00:00 1003A        0.2            0.4           9
 | ||
|  3 2024-03-19 01:00:00 1004A        0.2            0.4           4
 | ||
|  4 2024-03-19 01:00:00 1005A        0.1            0.3           6
 | ||
|  5 2024-03-19 01:00:00 1006A        0.1            0.4           5
 | ||
|  6 2024-03-19 01:00:00 1007A        0.3            0.5           6
 | ||
|  7 2024-03-19 01:00:00 1008A        0.2            0.4           2
 | ||
|  8 2024-03-19 01:00:00 1009A        0.2            0.4           2
 | ||
|  9 2024-03-19 01:00:00 1010A        0.1            0.3           2
 | ||
| 10 2024-03-19 01:00:00 1011A        0.2            0.4          12
 | ||
| # ℹ 20,078 more rows</code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="filter" class="slide level2">
 | ||
| <h2><code>filter</code></h2>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb39"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb39-1"><a></a>flights <span class="sc">|></span> </span>
 | ||
| <span id="cb39-2"><a></a>  <span class="fu">filter</span>(dep_delay <span class="sc">></span> <span class="dv">120</span>)</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 9,723 × 19
 | ||
|     year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
 | ||
|    <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 | ||
|  1  2013     1     1      848           1835       853     1001           1950
 | ||
|  2  2013     1     1      957            733       144     1056            853
 | ||
|  3  2013     1     1     1114            900       134     1447           1222
 | ||
|  4  2013     1     1     1540           1338       122     2020           1825
 | ||
|  5  2013     1     1     1815           1325       290     2120           1542
 | ||
|  6  2013     1     1     1842           1422       260     1958           1535
 | ||
|  7  2013     1     1     1856           1645       131     2212           2005
 | ||
|  8  2013     1     1     1934           1725       129     2126           1855
 | ||
|  9  2013     1     1     1938           1703       155     2109           1823
 | ||
| 10  2013     1     1     1942           1705       157     2124           1830
 | ||
| # ℹ 9,713 more rows
 | ||
| # ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
 | ||
| #   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
 | ||
| #   hour <dbl>, minute <dbl>, time_hour <dttm></code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="filter-练习" class="slide level2">
 | ||
| <h2>filter 练习</h2>
 | ||
| <p>Flights that departed on January 1.</p>
 | ||
| <div class="cell">
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 842 × 19
 | ||
|     year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
 | ||
|    <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 | ||
|  1  2013     1     1      517            515         2      830            819
 | ||
|  2  2013     1     1      533            529         4      850            830
 | ||
|  3  2013     1     1      542            540         2      923            850
 | ||
|  4  2013     1     1      544            545        -1     1004           1022
 | ||
|  5  2013     1     1      554            600        -6      812            837
 | ||
|  6  2013     1     1      554            558        -4      740            728
 | ||
|  7  2013     1     1      555            600        -5      913            854
 | ||
|  8  2013     1     1      557            600        -3      709            723
 | ||
|  9  2013     1     1      557            600        -3      838            846
 | ||
| 10  2013     1     1      558            600        -2      753            745
 | ||
| # ℹ 832 more rows
 | ||
| # ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
 | ||
| #   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
 | ||
| #   hour <dbl>, minute <dbl>, time_hour <dttm></code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="filter-练习-1" class="slide level2">
 | ||
| <h2>filter 练习</h2>
 | ||
| <p>Select flights that departed in January or February</p>
 | ||
| <div class="cell">
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 51,955 × 19
 | ||
|     year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
 | ||
|    <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 | ||
|  1  2013     1     1      517            515         2      830            819
 | ||
|  2  2013     1     1      533            529         4      850            830
 | ||
|  3  2013     1     1      542            540         2      923            850
 | ||
|  4  2013     1     1      544            545        -1     1004           1022
 | ||
|  5  2013     1     1      554            600        -6      812            837
 | ||
|  6  2013     1     1      554            558        -4      740            728
 | ||
|  7  2013     1     1      555            600        -5      913            854
 | ||
|  8  2013     1     1      557            600        -3      709            723
 | ||
|  9  2013     1     1      557            600        -3      838            846
 | ||
| 10  2013     1     1      558            600        -2      753            745
 | ||
| # ℹ 51,945 more rows
 | ||
| # ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
 | ||
| #   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
 | ||
| #   hour <dbl>, minute <dbl>, time_hour <dttm></code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="filter-练习-2" class="slide level2">
 | ||
| <h2>filter 练习</h2>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb43"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb43-1"><a></a>jan1 <span class="ot"><-</span> flights <span class="sc">|></span> </span>
 | ||
| <span id="cb43-2"><a></a>  <span class="fu">filter</span>(month <span class="sc">==</span> <span class="dv">1</span> <span class="sc">&</span> day <span class="sc">==</span> <span class="dv">1</span>)</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="filter-1" class="slide level2">
 | ||
| <h2>filter</h2>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb44"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb44-1"><a></a>flights <span class="sc">|></span> </span>
 | ||
| <span id="cb44-2"><a></a>  <span class="fu">filter</span>(<span class="at">month =</span> <span class="dv">1</span>)</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="filter-2" class="slide level2">
 | ||
| <h2>filter</h2>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb45"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb45-1"><a></a>flights <span class="sc">|></span> </span>
 | ||
| <span id="cb45-2"><a></a>  <span class="fu">filter</span>(month <span class="sc">==</span> <span class="dv">1</span> <span class="sc">|</span> <span class="dv">2</span>)</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 336,776 × 19
 | ||
|     year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
 | ||
|    <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 | ||
|  1  2013     1     1      517            515         2      830            819
 | ||
|  2  2013     1     1      533            529         4      850            830
 | ||
|  3  2013     1     1      542            540         2      923            850
 | ||
|  4  2013     1     1      544            545        -1     1004           1022
 | ||
|  5  2013     1     1      554            600        -6      812            837
 | ||
|  6  2013     1     1      554            558        -4      740            728
 | ||
|  7  2013     1     1      555            600        -5      913            854
 | ||
|  8  2013     1     1      557            600        -3      709            723
 | ||
|  9  2013     1     1      557            600        -3      838            846
 | ||
| 10  2013     1     1      558            600        -2      753            745
 | ||
| # ℹ 336,766 more rows
 | ||
| # ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
 | ||
| #   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
 | ||
| #   hour <dbl>, minute <dbl>, time_hour <dttm></code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="排序" class="slide level2">
 | ||
| <h2>排序</h2>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb47"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb47-1"><a></a>flights <span class="sc">|></span> </span>
 | ||
| <span id="cb47-2"><a></a>  <span class="fu">arrange</span>(year, month, day, dep_time)</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 336,776 × 19
 | ||
|     year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
 | ||
|    <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 | ||
|  1  2013     1     1      517            515         2      830            819
 | ||
|  2  2013     1     1      533            529         4      850            830
 | ||
|  3  2013     1     1      542            540         2      923            850
 | ||
|  4  2013     1     1      544            545        -1     1004           1022
 | ||
|  5  2013     1     1      554            600        -6      812            837
 | ||
|  6  2013     1     1      554            558        -4      740            728
 | ||
|  7  2013     1     1      555            600        -5      913            854
 | ||
|  8  2013     1     1      557            600        -3      709            723
 | ||
|  9  2013     1     1      557            600        -3      838            846
 | ||
| 10  2013     1     1      558            600        -2      753            745
 | ||
| # ℹ 336,766 more rows
 | ||
| # ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
 | ||
| #   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
 | ||
| #   hour <dbl>, minute <dbl>, time_hour <dttm></code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="排序-1" class="slide level2">
 | ||
| <h2>排序</h2>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb49"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb49-1"><a></a>flights <span class="sc">|></span> </span>
 | ||
| <span id="cb49-2"><a></a>  <span class="fu">arrange</span>(<span class="fu">desc</span>(dep_delay))</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 336,776 × 19
 | ||
|     year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
 | ||
|    <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 | ||
|  1  2013     1     9      641            900      1301     1242           1530
 | ||
|  2  2013     6    15     1432           1935      1137     1607           2120
 | ||
|  3  2013     1    10     1121           1635      1126     1239           1810
 | ||
|  4  2013     9    20     1139           1845      1014     1457           2210
 | ||
|  5  2013     7    22      845           1600      1005     1044           1815
 | ||
|  6  2013     4    10     1100           1900       960     1342           2211
 | ||
|  7  2013     3    17     2321            810       911      135           1020
 | ||
|  8  2013     6    27      959           1900       899     1236           2226
 | ||
|  9  2013     7    22     2257            759       898      121           1026
 | ||
| 10  2013    12     5      756           1700       896     1058           2020
 | ||
| # ℹ 336,766 more rows
 | ||
| # ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
 | ||
| #   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
 | ||
| #   hour <dbl>, minute <dbl>, time_hour <dttm></code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="slice" class="slide level2">
 | ||
| <h2>slice</h2>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb51"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb51-1"><a></a>flights <span class="sc">|></span> <span class="fu">head</span>(<span class="at">n =</span> <span class="dv">5</span>)</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 5 × 19
 | ||
|    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
 | ||
|   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 | ||
| 1  2013     1     1      517            515         2      830            819
 | ||
| 2  2013     1     1      533            529         4      850            830
 | ||
| 3  2013     1     1      542            540         2      923            850
 | ||
| 4  2013     1     1      544            545        -1     1004           1022
 | ||
| 5  2013     1     1      554            600        -6      812            837
 | ||
| # ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
 | ||
| #   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
 | ||
| #   hour <dbl>, minute <dbl>, time_hour <dttm></code></pre>
 | ||
| </div>
 | ||
| <div class="sourceCode cell-code" id="cb53"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb53-1"><a></a>flights <span class="sc">|></span> <span class="fu">slice</span>(<span class="dv">1</span><span class="sc">:</span><span class="dv">5</span>)</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 5 × 19
 | ||
|    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
 | ||
|   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 | ||
| 1  2013     1     1      517            515         2      830            819
 | ||
| 2  2013     1     1      533            529         4      850            830
 | ||
| 3  2013     1     1      542            540         2      923            850
 | ||
| 4  2013     1     1      544            545        -1     1004           1022
 | ||
| 5  2013     1     1      554            600        -6      812            837
 | ||
| # ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
 | ||
| #   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
 | ||
| #   hour <dbl>, minute <dbl>, time_hour <dttm></code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="slice-1" class="slide level2">
 | ||
| <h2>slice</h2>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb55"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb55-1"><a></a>flights <span class="sc">|></span> </span>
 | ||
| <span id="cb55-2"><a></a>  <span class="fu">slice_max</span>(dep_delay, <span class="at">n =</span> <span class="dv">5</span>)</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 5 × 19
 | ||
|    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
 | ||
|   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 | ||
| 1  2013     1     9      641            900      1301     1242           1530
 | ||
| 2  2013     6    15     1432           1935      1137     1607           2120
 | ||
| 3  2013     1    10     1121           1635      1126     1239           1810
 | ||
| 4  2013     9    20     1139           1845      1014     1457           2210
 | ||
| 5  2013     7    22      845           1600      1005     1044           1815
 | ||
| # ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
 | ||
| #   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
 | ||
| #   hour <dbl>, minute <dbl>, time_hour <dttm></code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="slice-2" class="slide level2">
 | ||
| <h2>slice</h2>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb57"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb57-1"><a></a>flights <span class="sc">|></span> </span>
 | ||
| <span id="cb57-2"><a></a>  <span class="fu">slice_min</span>(dep_delay, <span class="at">prop =</span> <span class="fl">0.005</span>)</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 2,257 × 19
 | ||
|     year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
 | ||
|    <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 | ||
|  1  2013    12     7     2040           2123       -43       40           2352
 | ||
|  2  2013     2     3     2022           2055       -33     2240           2338
 | ||
|  3  2013    11    10     1408           1440       -32     1549           1559
 | ||
|  4  2013     1    11     1900           1930       -30     2233           2243
 | ||
|  5  2013     1    29     1703           1730       -27     1947           1957
 | ||
|  6  2013     8     9      729            755       -26     1002            955
 | ||
|  7  2013    10    23     1907           1932       -25     2143           2143
 | ||
|  8  2013     3    30     2030           2055       -25     2213           2250
 | ||
|  9  2013     3     2     1431           1455       -24     1601           1631
 | ||
| 10  2013     5     5      934            958       -24     1225           1309
 | ||
| # ℹ 2,247 more rows
 | ||
| # ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
 | ||
| #   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
 | ||
| #   hour <dbl>, minute <dbl>, time_hour <dttm></code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="排序练习" class="slide level2">
 | ||
| <h2>排序练习</h2>
 | ||
| <p>根据<code>origin</code>、<code>dest</code>、<code>air_time</code>倒序排序。</p>
 | ||
| <div class="cell">
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 336,776 × 19
 | ||
|    origin dest  air_time  year month   day dep_time sched_dep_time dep_delay
 | ||
|    <chr>  <chr>    <dbl> <int> <int> <int>    <int>          <int>     <dbl>
 | ||
|  1 EWR    ALB         50  2013     5     5     1950           2000       -10
 | ||
|  2 EWR    ALB         45  2013     1    13     1721           1619        62
 | ||
|  3 EWR    ALB         43  2013     1    20     1623           1619         4
 | ||
|  4 EWR    ALB         42  2013     4     1     1439           1340        59
 | ||
|  5 EWR    ALB         41  2013    12     4     1316           1310         6
 | ||
|  6 EWR    ALB         41  2013     2     1     2034           2000        34
 | ||
|  7 EWR    ALB         41  2013     5     7     1956           2000        -4
 | ||
|  8 EWR    ALB         38  2013     1    18     1824           1619       125
 | ||
|  9 EWR    ALB         38  2013     1    28     1636           1619        17
 | ||
| 10 EWR    ALB         38  2013    11    10     2149           2159       -10
 | ||
| # ℹ 336,766 more rows
 | ||
| # ℹ 10 more variables: arr_time <int>, sched_arr_time <int>, arr_delay <dbl>,
 | ||
| #   carrier <chr>, flight <int>, tailnum <chr>, distance <dbl>, hour <dbl>,
 | ||
| #   minute <dbl>, time_hour <dttm></code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="去重" class="slide level2">
 | ||
| <h2>去重</h2>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb60"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb60-1"><a></a><span class="co"># Remove duplicate rows, if any</span></span>
 | ||
| <span id="cb60-2"><a></a>flights <span class="sc">|></span> </span>
 | ||
| <span id="cb60-3"><a></a>  <span class="fu">distinct</span>()</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 336,776 × 19
 | ||
|     year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
 | ||
|    <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 | ||
|  1  2013     1     1      517            515         2      830            819
 | ||
|  2  2013     1     1      533            529         4      850            830
 | ||
|  3  2013     1     1      542            540         2      923            850
 | ||
|  4  2013     1     1      544            545        -1     1004           1022
 | ||
|  5  2013     1     1      554            600        -6      812            837
 | ||
|  6  2013     1     1      554            558        -4      740            728
 | ||
|  7  2013     1     1      555            600        -5      913            854
 | ||
|  8  2013     1     1      557            600        -3      709            723
 | ||
|  9  2013     1     1      557            600        -3      838            846
 | ||
| 10  2013     1     1      558            600        -2      753            745
 | ||
| # ℹ 336,766 more rows
 | ||
| # ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
 | ||
| #   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
 | ||
| #   hour <dbl>, minute <dbl>, time_hour <dttm></code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="去重-1" class="slide level2">
 | ||
| <h2>去重</h2>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb62"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb62-1"><a></a><span class="co"># Find all unique origin and destination pairs</span></span>
 | ||
| <span id="cb62-2"><a></a>flights <span class="sc">|></span> </span>
 | ||
| <span id="cb62-3"><a></a>  <span class="fu">distinct</span>(origin, dest)</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 224 × 2
 | ||
|    origin dest 
 | ||
|    <chr>  <chr>
 | ||
|  1 EWR    IAH  
 | ||
|  2 LGA    IAH  
 | ||
|  3 JFK    MIA  
 | ||
|  4 JFK    BQN  
 | ||
|  5 LGA    ATL  
 | ||
|  6 EWR    ORD  
 | ||
|  7 EWR    FLL  
 | ||
|  8 LGA    IAD  
 | ||
|  9 JFK    MCO  
 | ||
| 10 LGA    ORD  
 | ||
| # ℹ 214 more rows</code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="去重-2" class="slide level2">
 | ||
| <h2>去重</h2>
 | ||
| <div class="cell">
 | ||
| <div class="sourceCode cell-code" id="cb64"><pre class="sourceCode numberSource r number-lines code-with-copy"><code class="sourceCode r"><span id="cb64-1"><a></a>flights <span class="sc">|></span> </span>
 | ||
| <span id="cb64-2"><a></a>  <span class="fu">distinct</span>(origin, dest, <span class="at">.keep_all =</span> <span class="cn">TRUE</span>)</span></code><button title="复制到剪贴板" class="code-copy-button"><i class="bi"></i></button></pre></div>
 | ||
| <div class="cell-output cell-output-stdout">
 | ||
| <pre><code># A tibble: 224 × 19
 | ||
|     year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
 | ||
|    <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
 | ||
|  1  2013     1     1      517            515         2      830            819
 | ||
|  2  2013     1     1      533            529         4      850            830
 | ||
|  3  2013     1     1      542            540         2      923            850
 | ||
|  4  2013     1     1      544            545        -1     1004           1022
 | ||
|  5  2013     1     1      554            600        -6      812            837
 | ||
|  6  2013     1     1      554            558        -4      740            728
 | ||
|  7  2013     1     1      555            600        -5      913            854
 | ||
|  8  2013     1     1      557            600        -3      709            723
 | ||
|  9  2013     1     1      557            600        -3      838            846
 | ||
| 10  2013     1     1      558            600        -2      753            745
 | ||
| # ℹ 214 more rows
 | ||
| # ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
 | ||
| #   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
 | ||
| #   hour <dbl>, minute <dbl>, time_hour <dttm></code></pre>
 | ||
| </div>
 | ||
| </div>
 | ||
| </section>
 | ||
| <section id="欢迎讨论" class="slide level2 center">
 | ||
| <h2>欢迎讨论!</h2>
 | ||
| <span class="r-fit-text"><svg viewbox="0 0 576 512" style="height:1em;position:relative;display:inline-block;top:.1em;" xmlns="http://www.w3.org/2000/svg"> <path d="M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z"></path> </svg><a href="https://drwater.rcees.ac.cn">苏命|https://drwater.rcees.ac.cn</a>; <svg viewbox="0 0 576 512" style="height:1em;position:relative;display:inline-block;top:.1em;" xmlns="http://www.w3.org/2000/svg"> <path d="M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 400H48V80h480v352zM208 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2zM360 320h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8z"></path> </svg><a href="https://drwater.rcees.ac.cn/bcard">https://drwater.rcees.ac.cn/bcard</a>; <svg viewbox="0 0 512 512" style="height:1em;position:relative;display:inline-block;top:.1em;" xmlns="http://www.w3.org/2000/svg"> <path d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"></path> </svg><a href="https://drwater.rcees.ac.cn/course/public/RWEP/@PUB/SD/">Slides</a></span><br><br>
 | ||
| <div class="columns">
 | ||
| <div class="column" style="width:30%;">
 | ||
| <span class="r-fit-text"><svg viewbox="0 0 512 512" style="height:1em;position:relative;display:inline-block;top:.1em;" xmlns="http://www.w3.org/2000/svg"> <path d="M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm0 48v40.805c-22.422 18.259-58.168 46.651-134.587 106.49-16.841 13.247-50.201 45.072-73.413 44.701-23.208.375-56.579-31.459-73.413-44.701C106.18 199.465 70.425 171.067 48 152.805V112h416zM48 400V214.398c22.914 18.251 55.409 43.862 104.938 82.646 21.857 17.205 60.134 55.186 103.062 54.955 42.717.231 80.509-37.199 103.053-54.947 49.528-38.783 82.032-64.401 104.947-82.653V400H48z"></path> </svg><a href="mailto:mingsu@rcees.ac.cn">mingsu@rcees.ac.cn</a>;</span><br>
 | ||
| </div></div>
 | ||
| 
 | ||
| 
 | ||
| </section>
 | ||
|     </div>
 | ||
|   <div class="quarto-auto-generated-content" style="display: none;">
 | ||
| <p><img src="./_extensions/inst/img/ucaslogo.png" class="slide-logo"></p>
 | ||
| <div class="footer footer-default">
 | ||
| 
 | ||
| </div>
 | ||
| </div></div>
 | ||
| 
 | ||
|   <script>window.backupDefine = window.define; window.define = undefined;</script>
 | ||
|   <script src="../../site_libs/revealjs/dist/reveal.js"></script>
 | ||
|   <!-- reveal.js plugins -->
 | ||
|   <script src="../../site_libs/revealjs/plugin/quarto-line-highlight/line-highlight.js"></script>
 | ||
|   <script src="../../site_libs/revealjs/plugin/pdf-export/pdfexport.js"></script>
 | ||
|   <script src="../../site_libs/revealjs/plugin/reveal-menu/menu.js"></script>
 | ||
|   <script src="../../site_libs/revealjs/plugin/reveal-menu/quarto-menu.js"></script>
 | ||
|   <script src="../../site_libs/revealjs/plugin/reveal-chalkboard/plugin.js"></script>
 | ||
|   <script src="../../site_libs/revealjs/plugin/reveal-pointer/pointer.js"></script>
 | ||
|   <script src="../../site_libs/revealjs/plugin/quarto-support/support.js"></script>
 | ||
|   
 | ||
| 
 | ||
|   <script src="../../site_libs/revealjs/plugin/notes/notes.js"></script>
 | ||
|   <script src="../../site_libs/revealjs/plugin/search/search.js"></script>
 | ||
|   <script src="../../site_libs/revealjs/plugin/zoom/zoom.js"></script>
 | ||
|   <script src="../../site_libs/revealjs/plugin/math/math.js"></script>
 | ||
|   <script>window.define = window.backupDefine; window.backupDefine = undefined;</script>
 | ||
| 
 | ||
|   <script>
 | ||
| 
 | ||
|       // Full list of configuration options available at:
 | ||
|       // https://revealjs.com/config/
 | ||
|       Reveal.initialize({
 | ||
| 'controlsAuto': true,
 | ||
| 'previewLinksAuto': true,
 | ||
| 'pdfSeparateFragments': false,
 | ||
| 'autoAnimateEasing': "ease",
 | ||
| 'autoAnimateDuration': 1,
 | ||
| 'autoAnimateUnmatched': true,
 | ||
| 'jumpToSlide': true,
 | ||
| 'menu': {"side":"left","useTextContentForMissingTitles":true,"markers":false,"loadIcons":false,"custom":[{"title":"Tools","icon":"<i class=\"fas fa-gear\"></i>","content":"<ul class=\"slide-menu-items\">\n<li class=\"slide-tool-item active\" data-item=\"0\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.fullscreen(event)\"><kbd>f</kbd> Fullscreen</a></li>\n<li class=\"slide-tool-item\" data-item=\"1\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.speakerMode(event)\"><kbd>s</kbd> Speaker View</a></li>\n<li class=\"slide-tool-item\" data-item=\"2\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.overview(event)\"><kbd>o</kbd> Slide Overview</a></li>\n<li class=\"slide-tool-item\" data-item=\"3\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.togglePdfExport(event)\"><kbd>e</kbd> PDF Export Mode</a></li>\n<li class=\"slide-tool-item\" data-item=\"4\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.toggleScrollView(event)\"><kbd>r</kbd> Scroll View Mode</a></li>\n<li class=\"slide-tool-item\" data-item=\"5\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.toggleChalkboard(event)\"><kbd>b</kbd> Toggle Chalkboard</a></li>\n<li class=\"slide-tool-item\" data-item=\"6\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.toggleNotesCanvas(event)\"><kbd>c</kbd> Toggle Notes Canvas</a></li>\n<li class=\"slide-tool-item\" data-item=\"7\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.downloadDrawings(event)\"><kbd>d</kbd> Download Drawings</a></li>\n<li class=\"slide-tool-item\" data-item=\"8\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.keyboardHelp(event)\"><kbd>?</kbd> Keyboard Help</a></li>\n</ul>"}],"openButton":true},
 | ||
| 'chalkboard': {"buttons":true},
 | ||
| 'pointer': {"key":"p","color":"#32cd32","pointerSize":18,"alwaysVisible":false},
 | ||
| 'smaller': false,
 | ||
|  
 | ||
|         // Display controls in the bottom right corner
 | ||
|         controls: false,
 | ||
| 
 | ||
|         // Help the user learn the controls by providing hints, for example by
 | ||
|         // bouncing the down arrow when they first encounter a vertical slide
 | ||
|         controlsTutorial: false,
 | ||
| 
 | ||
|         // Determines where controls appear, "edges" or "bottom-right"
 | ||
|         controlsLayout: 'edges',
 | ||
| 
 | ||
|         // Visibility rule for backwards navigation arrows; "faded", "hidden"
 | ||
|         // or "visible"
 | ||
|         controlsBackArrows: 'faded',
 | ||
| 
 | ||
|         // Display a presentation progress bar
 | ||
|         progress: true,
 | ||
| 
 | ||
|         // Display the page number of the current slide
 | ||
|         slideNumber: 'c/t',
 | ||
| 
 | ||
|         // 'all', 'print', or 'speaker'
 | ||
|         showSlideNumber: 'all',
 | ||
| 
 | ||
|         // Add the current slide number to the URL hash so that reloading the
 | ||
|         // page/copying the URL will return you to the same slide
 | ||
|         hash: true,
 | ||
| 
 | ||
|         // Start with 1 for the hash rather than 0
 | ||
|         hashOneBasedIndex: false,
 | ||
| 
 | ||
|         // Flags if we should monitor the hash and change slides accordingly
 | ||
|         respondToHashChanges: true,
 | ||
| 
 | ||
|         // Push each slide change to the browser history
 | ||
|         history: true,
 | ||
| 
 | ||
|         // Enable keyboard shortcuts for navigation
 | ||
|         keyboard: true,
 | ||
| 
 | ||
|         // Enable the slide overview mode
 | ||
|         overview: true,
 | ||
| 
 | ||
|         // Disables the default reveal.js slide layout (scaling and centering)
 | ||
|         // so that you can use custom CSS layout
 | ||
|         disableLayout: false,
 | ||
| 
 | ||
|         // Vertical centering of slides
 | ||
|         center: false,
 | ||
| 
 | ||
|         // Enables touch navigation on devices with touch input
 | ||
|         touch: true,
 | ||
| 
 | ||
|         // Loop the presentation
 | ||
|         loop: false,
 | ||
| 
 | ||
|         // Change the presentation direction to be RTL
 | ||
|         rtl: false,
 | ||
| 
 | ||
|         // see https://revealjs.com/vertical-slides/#navigation-mode
 | ||
|         navigationMode: 'linear',
 | ||
| 
 | ||
|         // Randomizes the order of slides each time the presentation loads
 | ||
|         shuffle: false,
 | ||
| 
 | ||
|         // Turns fragments on and off globally
 | ||
|         fragments: true,
 | ||
| 
 | ||
|         // Flags whether to include the current fragment in the URL,
 | ||
|         // so that reloading brings you to the same fragment position
 | ||
|         fragmentInURL: false,
 | ||
| 
 | ||
|         // Flags if the presentation is running in an embedded mode,
 | ||
|         // i.e. contained within a limited portion of the screen
 | ||
|         embedded: false,
 | ||
| 
 | ||
|         // Flags if we should show a help overlay when the questionmark
 | ||
|         // key is pressed
 | ||
|         help: true,
 | ||
| 
 | ||
|         // Flags if it should be possible to pause the presentation (blackout)
 | ||
|         pause: true,
 | ||
| 
 | ||
|         // Flags if speaker notes should be visible to all viewers
 | ||
|         showNotes: false,
 | ||
| 
 | ||
|         // Global override for autoplaying embedded media (null/true/false)
 | ||
|         autoPlayMedia: null,
 | ||
| 
 | ||
|         // Global override for preloading lazy-loaded iframes (null/true/false)
 | ||
|         preloadIframes: null,
 | ||
| 
 | ||
|         // Number of milliseconds between automatically proceeding to the
 | ||
|         // next slide, disabled when set to 0, this value can be overwritten
 | ||
|         // by using a data-autoslide attribute on your slides
 | ||
|         autoSlide: 0,
 | ||
| 
 | ||
|         // Stop auto-sliding after user input
 | ||
|         autoSlideStoppable: true,
 | ||
| 
 | ||
|         // Use this method for navigation when auto-sliding
 | ||
|         autoSlideMethod: null,
 | ||
| 
 | ||
|         // Specify the average time in seconds that you think you will spend
 | ||
|         // presenting each slide. This is used to show a pacing timer in the
 | ||
|         // speaker view
 | ||
|         defaultTiming: null,
 | ||
| 
 | ||
|         // Enable slide navigation via mouse wheel
 | ||
|         mouseWheel: false,
 | ||
| 
 | ||
|         // The display mode that will be used to show slides
 | ||
|         display: 'block',
 | ||
| 
 | ||
|         // Hide cursor if inactive
 | ||
|         hideInactiveCursor: true,
 | ||
| 
 | ||
|         // Time before the cursor is hidden (in ms)
 | ||
|         hideCursorTime: 5000,
 | ||
| 
 | ||
|         // Opens links in an iframe preview overlay
 | ||
|         previewLinks: false,
 | ||
| 
 | ||
|         // Transition style (none/fade/slide/convex/concave/zoom)
 | ||
|         transition: 'none',
 | ||
| 
 | ||
|         // Transition speed (default/fast/slow)
 | ||
|         transitionSpeed: 'default',
 | ||
| 
 | ||
|         // Transition style for full page slide backgrounds
 | ||
|         // (none/fade/slide/convex/concave/zoom)
 | ||
|         backgroundTransition: 'none',
 | ||
| 
 | ||
|         // Number of slides away from the current that are visible
 | ||
|         viewDistance: 3,
 | ||
| 
 | ||
|         // Number of slides away from the current that are visible on mobile
 | ||
|         // devices. It is advisable to set this to a lower number than
 | ||
|         // viewDistance in order to save resources.
 | ||
|         mobileViewDistance: 2,
 | ||
| 
 | ||
|         // The "normal" size of the presentation, aspect ratio will be preserved
 | ||
|         // when the presentation is scaled to fit different resolutions. Can be
 | ||
|         // specified using percentage units.
 | ||
|         width: 1050,
 | ||
| 
 | ||
|         height: 700,
 | ||
| 
 | ||
|         // Factor of the display size that should remain empty around the content
 | ||
|         margin: 0.1,
 | ||
| 
 | ||
|         math: {
 | ||
|           mathjax: 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.9/MathJax.js',
 | ||
|           config: 'TeX-AMS_HTML-full',
 | ||
|           tex2jax: {
 | ||
|             inlineMath: [['\\(','\\)']],
 | ||
|             displayMath: [['\\[','\\]']],
 | ||
|             balanceBraces: true,
 | ||
|             processEscapes: false,
 | ||
|             processRefs: true,
 | ||
|             processEnvironments: true,
 | ||
|             preview: 'TeX',
 | ||
|             skipTags: ['script','noscript','style','textarea','pre','code'],
 | ||
|             ignoreClass: 'tex2jax_ignore',
 | ||
|             processClass: 'tex2jax_process'
 | ||
|           },
 | ||
|         },
 | ||
| 
 | ||
|         // reveal.js plugins
 | ||
|         plugins: [QuartoLineHighlight, PdfExport, RevealMenu, RevealChalkboard, RevealPointer, QuartoSupport,
 | ||
| 
 | ||
|           RevealMath,
 | ||
|           RevealNotes,
 | ||
|           RevealSearch,
 | ||
|           RevealZoom
 | ||
|         ]
 | ||
|       });
 | ||
|     </script>
 | ||
|     
 | ||
|     <script>
 | ||
|       // htmlwidgets need to know to resize themselves when slides are shown/hidden.
 | ||
|       // Fire the "slideenter" event (handled by htmlwidgets.js) when the current
 | ||
|       // slide changes (different for each slide format).
 | ||
|       (function () {
 | ||
|         // dispatch for htmlwidgets
 | ||
|         function fireSlideEnter() {
 | ||
|           const event = window.document.createEvent("Event");
 | ||
|           event.initEvent("slideenter", true, true);
 | ||
|           window.document.dispatchEvent(event);
 | ||
|         }
 | ||
| 
 | ||
|         function fireSlideChanged(previousSlide, currentSlide) {
 | ||
|           fireSlideEnter();
 | ||
| 
 | ||
|           // dispatch for shiny
 | ||
|           if (window.jQuery) {
 | ||
|             if (previousSlide) {
 | ||
|               window.jQuery(previousSlide).trigger("hidden");
 | ||
|             }
 | ||
|             if (currentSlide) {
 | ||
|               window.jQuery(currentSlide).trigger("shown");
 | ||
|             }
 | ||
|           }
 | ||
|         }
 | ||
| 
 | ||
|         // hookup for slidy
 | ||
|         if (window.w3c_slidy) {
 | ||
|           window.w3c_slidy.add_observer(function (slide_num) {
 | ||
|             // slide_num starts at position 1
 | ||
|             fireSlideChanged(null, w3c_slidy.slides[slide_num - 1]);
 | ||
|           });
 | ||
|         }
 | ||
| 
 | ||
|       })();
 | ||
|     </script>
 | ||
| 
 | ||
|     <script id="quarto-html-after-body" type="application/javascript">
 | ||
|     window.document.addEventListener("DOMContentLoaded", function (event) {
 | ||
|       const toggleBodyColorMode = (bsSheetEl) => {
 | ||
|         const mode = bsSheetEl.getAttribute("data-mode");
 | ||
|         const bodyEl = window.document.querySelector("body");
 | ||
|         if (mode === "dark") {
 | ||
|           bodyEl.classList.add("quarto-dark");
 | ||
|           bodyEl.classList.remove("quarto-light");
 | ||
|         } else {
 | ||
|           bodyEl.classList.add("quarto-light");
 | ||
|           bodyEl.classList.remove("quarto-dark");
 | ||
|         }
 | ||
|       }
 | ||
|       const toggleBodyColorPrimary = () => {
 | ||
|         const bsSheetEl = window.document.querySelector("link#quarto-bootstrap");
 | ||
|         if (bsSheetEl) {
 | ||
|           toggleBodyColorMode(bsSheetEl);
 | ||
|         }
 | ||
|       }
 | ||
|       toggleBodyColorPrimary();  
 | ||
|       const tabsets =  window.document.querySelectorAll(".panel-tabset-tabby")
 | ||
|       tabsets.forEach(function(tabset) {
 | ||
|         const tabby = new Tabby('#' + tabset.id);
 | ||
|       });
 | ||
|       const isCodeAnnotation = (el) => {
 | ||
|         for (const clz of el.classList) {
 | ||
|           if (clz.startsWith('code-annotation-')) {                     
 | ||
|             return true;
 | ||
|           }
 | ||
|         }
 | ||
|         return false;
 | ||
|       }
 | ||
|       const onCopySuccess = function(e) {
 | ||
|         // button target
 | ||
|         const button = e.trigger;
 | ||
|         // don't keep focus
 | ||
|         button.blur();
 | ||
|         // flash "checked"
 | ||
|         button.classList.add('code-copy-button-checked');
 | ||
|         var currentTitle = button.getAttribute("title");
 | ||
|         button.setAttribute("title", "已复制");
 | ||
|         let tooltip;
 | ||
|         if (window.bootstrap) {
 | ||
|           button.setAttribute("data-bs-toggle", "tooltip");
 | ||
|           button.setAttribute("data-bs-placement", "left");
 | ||
|           button.setAttribute("data-bs-title", "已复制");
 | ||
|           tooltip = new bootstrap.Tooltip(button, 
 | ||
|             { trigger: "manual", 
 | ||
|               customClass: "code-copy-button-tooltip",
 | ||
|               offset: [0, -8]});
 | ||
|           tooltip.show();    
 | ||
|         }
 | ||
|         setTimeout(function() {
 | ||
|           if (tooltip) {
 | ||
|             tooltip.hide();
 | ||
|             button.removeAttribute("data-bs-title");
 | ||
|             button.removeAttribute("data-bs-toggle");
 | ||
|             button.removeAttribute("data-bs-placement");
 | ||
|           }
 | ||
|           button.setAttribute("title", currentTitle);
 | ||
|           button.classList.remove('code-copy-button-checked');
 | ||
|         }, 1000);
 | ||
|         // clear code selection
 | ||
|         e.clearSelection();
 | ||
|       }
 | ||
|       const getTextToCopy = function(trigger) {
 | ||
|           const codeEl = trigger.previousElementSibling.cloneNode(true);
 | ||
|           for (const childEl of codeEl.children) {
 | ||
|             if (isCodeAnnotation(childEl)) {
 | ||
|               childEl.remove();
 | ||
|             }
 | ||
|           }
 | ||
|           return codeEl.innerText;
 | ||
|       }
 | ||
|       const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
 | ||
|         text: getTextToCopy
 | ||
|       });
 | ||
|       clipboard.on('success', onCopySuccess);
 | ||
|       if (window.document.getElementById('quarto-embedded-source-code-modal')) {
 | ||
|         const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
 | ||
|           text: getTextToCopy,
 | ||
|           container: window.document.getElementById('quarto-embedded-source-code-modal')
 | ||
|         });
 | ||
|         clipboardModal.on('success', onCopySuccess);
 | ||
|       }
 | ||
|         var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
 | ||
|         var mailtoRegex = new RegExp(/^mailto:/);
 | ||
|           var filterRegex = new RegExp("https:\/\/drc\.drwater\.net\/course\/public\/RWEP\/PUB");
 | ||
|         var isInternal = (href) => {
 | ||
|             return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
 | ||
|         }
 | ||
|         // Inspect non-navigation links and adorn them if external
 | ||
|      	var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
 | ||
|         for (var i=0; i<links.length; i++) {
 | ||
|           const link = links[i];
 | ||
|           if (!isInternal(link.href)) {
 | ||
|             // undo the damage that might have been done by quarto-nav.js in the case of
 | ||
|             // links that we want to consider external
 | ||
|             if (link.dataset.originalHref !== undefined) {
 | ||
|               link.href = link.dataset.originalHref;
 | ||
|             }
 | ||
|           }
 | ||
|         }
 | ||
|       function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
 | ||
|         const config = {
 | ||
|           allowHTML: true,
 | ||
|           maxWidth: 500,
 | ||
|           delay: 100,
 | ||
|           arrow: false,
 | ||
|           appendTo: function(el) {
 | ||
|               return el.closest('section.slide') || el.parentElement;
 | ||
|           },
 | ||
|           interactive: true,
 | ||
|           interactiveBorder: 10,
 | ||
|           theme: 'light-border',
 | ||
|           placement: 'bottom-start',
 | ||
|         };
 | ||
|         if (contentFn) {
 | ||
|           config.content = contentFn;
 | ||
|         }
 | ||
|         if (onTriggerFn) {
 | ||
|           config.onTrigger = onTriggerFn;
 | ||
|         }
 | ||
|         if (onUntriggerFn) {
 | ||
|           config.onUntrigger = onUntriggerFn;
 | ||
|         }
 | ||
|           config['offset'] = [0,0];
 | ||
|           config['maxWidth'] = 700;
 | ||
|         window.tippy(el, config); 
 | ||
|       }
 | ||
|       const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
 | ||
|       for (var i=0; i<noterefs.length; i++) {
 | ||
|         const ref = noterefs[i];
 | ||
|         tippyHover(ref, function() {
 | ||
|           // use id or data attribute instead here
 | ||
|           let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
 | ||
|           try { href = new URL(href).hash; } catch {}
 | ||
|           const id = href.replace(/^#\/?/, "");
 | ||
|           const note = window.document.getElementById(id);
 | ||
|           if (note) {
 | ||
|             return note.innerHTML;
 | ||
|           } else {
 | ||
|             return "";
 | ||
|           }
 | ||
|         });
 | ||
|       }
 | ||
|       const findCites = (el) => {
 | ||
|         const parentEl = el.parentElement;
 | ||
|         if (parentEl) {
 | ||
|           const cites = parentEl.dataset.cites;
 | ||
|           if (cites) {
 | ||
|             return {
 | ||
|               el,
 | ||
|               cites: cites.split(' ')
 | ||
|             };
 | ||
|           } else {
 | ||
|             return findCites(el.parentElement)
 | ||
|           }
 | ||
|         } else {
 | ||
|           return undefined;
 | ||
|         }
 | ||
|       };
 | ||
|       var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
 | ||
|       for (var i=0; i<bibliorefs.length; i++) {
 | ||
|         const ref = bibliorefs[i];
 | ||
|         const citeInfo = findCites(ref);
 | ||
|         if (citeInfo) {
 | ||
|           tippyHover(citeInfo.el, function() {
 | ||
|             var popup = window.document.createElement('div');
 | ||
|             citeInfo.cites.forEach(function(cite) {
 | ||
|               var citeDiv = window.document.createElement('div');
 | ||
|               citeDiv.classList.add('hanging-indent');
 | ||
|               citeDiv.classList.add('csl-entry');
 | ||
|               var biblioDiv = window.document.getElementById('ref-' + cite);
 | ||
|               if (biblioDiv) {
 | ||
|                 citeDiv.innerHTML = biblioDiv.innerHTML;
 | ||
|               }
 | ||
|               popup.appendChild(citeDiv);
 | ||
|             });
 | ||
|             return popup.innerHTML;
 | ||
|           });
 | ||
|         }
 | ||
|       }
 | ||
|     });
 | ||
|     </script>
 | ||
|     
 | ||
| 
 | ||
| </body></html> |