Skip to content

Commit 9f13754

Browse files
committed
added learning objectives
1 parent e76459a commit 9f13754

File tree

114 files changed

+5799
-4417
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

114 files changed

+5799
-4417
lines changed

docs/EcologyLesson/Intro/index.html

Lines changed: 19 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
33

44
<meta charset="utf-8">
5-
<meta name="generator" content="quarto-1.6.40">
5+
<meta name="generator" content="quarto-1.4.554">
66

77
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
88

@@ -35,10 +35,10 @@
3535
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
3636
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
3737
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
38-
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-549806ee2085284f45b00abea8c6df48.css" rel="stylesheet" id="quarto-text-highlighting-styles">
38+
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting.css" rel="stylesheet" id="quarto-text-highlighting-styles">
3939
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
4040
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
41-
<link href="../../site_libs/bootstrap/bootstrap-3ed3a85e8781f68cd9162943f395acec.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
41+
<link href="../../site_libs/bootstrap/bootstrap.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="light">
4242
<script id="quarto-search-options" type="application/json">{
4343
"location": "navbar",
4444
"copy-button": false,
@@ -78,7 +78,7 @@
7878
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
7979
<div class="navbar-container container-fluid">
8080
<div id="quarto-search" class="" title="Search"></div>
81-
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Toggle navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
81+
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
8282
<span class="navbar-toggler-icon"></span>
8383
</button>
8484
<div class="collapse navbar-collapse" id="navbarCollapse">
@@ -113,7 +113,7 @@
113113
</li>
114114
</ul>
115115
</div> <!-- /navcollapse -->
116-
<div class="quarto-navbar-tools tools-wide">
116+
<div class="quarto-navbar-tools tools-wide">
117117
<a href="https://www.youtube.com/STEMcoding" title="" class="quarto-navigation-tool px-1" aria-label=""><i class="bi bi-youtube"></i></a>
118118
<a href="https://www.instagram.com/stemcoding/" title="" class="quarto-navigation-tool px-1" aria-label=""><i class="bi bi-instagram"></i></a>
119119
<a href="https://www.facebook.com/stemcodingproject" title="" class="quarto-navigation-tool px-1" aria-label=""><i class="bi bi-facebook"></i></a>
@@ -285,7 +285,18 @@ <h2 class="anchored" data-anchor-id="key-points">Key Points</h2>
285285
}
286286
return false;
287287
}
288-
const onCopySuccess = function(e) {
288+
const clipboard = new window.ClipboardJS('.code-copy-button', {
289+
text: function(trigger) {
290+
const codeEl = trigger.previousElementSibling.cloneNode(true);
291+
for (const childEl of codeEl.children) {
292+
if (isCodeAnnotation(childEl)) {
293+
childEl.remove();
294+
}
295+
}
296+
return codeEl.innerText;
297+
}
298+
});
299+
clipboard.on('success', function(e) {
289300
// button target
290301
const button = e.trigger;
291302
// don't keep focus
@@ -317,35 +328,15 @@ <h2 class="anchored" data-anchor-id="key-points">Key Points</h2>
317328
}, 1000);
318329
// clear code selection
319330
e.clearSelection();
320-
}
321-
const getTextToCopy = function(trigger) {
322-
const codeEl = trigger.previousElementSibling.cloneNode(true);
323-
for (const childEl of codeEl.children) {
324-
if (isCodeAnnotation(childEl)) {
325-
childEl.remove();
326-
}
327-
}
328-
return codeEl.innerText;
329-
}
330-
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
331-
text: getTextToCopy
332331
});
333-
clipboard.on('success', onCopySuccess);
334-
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
335-
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
336-
text: getTextToCopy,
337-
container: window.document.getElementById('quarto-embedded-source-code-modal')
338-
});
339-
clipboardModal.on('success', onCopySuccess);
340-
}
341332
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
342333
var mailtoRegex = new RegExp(/^mailto:/);
343334
var filterRegex = new RegExp('/' + window.location.host + '/');
344335
var isInternal = (href) => {
345336
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
346337
}
347338
// Inspect non-navigation links and adorn them if external
348-
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)');
339+
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)');
349340
for (var i=0; i<links.length; i++) {
350341
const link = links[i];
351342
if (!isInternal(link.href)) {
@@ -442,6 +433,7 @@ <h2 class="anchored" data-anchor-id="key-points">Key Points</h2>
442433
if (window.Quarto?.typesetMath) {
443434
window.Quarto.typesetMath(note);
444435
}
436+
// TODO in 1.5, we should make sure this works without a callout special case
445437
if (note.classList.contains("callout")) {
446438
return note.outerHTML;
447439
} else {

docs/EcologyLesson/Intro/index.qmd

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
---
2+
title: "Introduction"
3+
subtitle: "Data Organization in Spreadsheets for Ecologists"
4+
---
5+
6+
## Overview
7+
* **Teaching:** 15 min
8+
* **Exercises:** 3 min
9+
* **Questions**
10+
* What are basic principles for using spreadsheets for good data organization?
11+
* **Objectives**
12+
* Describe best practices for organizing data so computers can make the best use of data sets.
13+
14+
Good data organization is the foundation of your research project. Most researchers have data or do data entry in spreadsheets. Spreadsheet programs are very useful graphical interfaces for designing data tables and handling very basic data quality control functions.
15+
16+
## Spreadsheet outline
17+
18+
After this lesson, you will be able to:
19+
20+
*bImplement best practices in data table formatting
21+
* Identify and address common formatting mistakes
22+
* Understand approaches for handling dates in spreadsheets
23+
* Utilize basic quality control features and data manipulation practices
24+
* Effectively export data from spreadsheet programs
25+
Overall good data practices
26+
27+
Spreadsheets are good for data entry. Therefore we have a lot of data in spreadsheets. Much of your time as a researcher will be spent in this ‘data wrangling’ stage. It's not the most fun, but it's necessary. We'll teach you how to think about data organization and some practices for more effective data wrangling.
28+
29+
## What this lesson will not teach you
30+
31+
* How to do statistics in a spreadsheet
32+
* How to do plotting in a spreadsheet
33+
* How to write code in spreadsheet programs
34+
35+
If you're looking to do this, a good reference is [Head First Excel](https://www.amazon.com/Head-First-Excel-learners-spreadsheets/dp/0596807694/), published by O’Reilly.
36+
37+
## Why aren't we teaching data analysis in spreadsheets
38+
39+
* Data analysis in spreadsheets usually requires a lot of manual work. If you want to change a parameter or run an analysis with a new data set, you usually have to redo everything by hand. (We do know that you can create macros, but see the next point.)
40+
41+
* It is also difficult to track or reproduce statistical or plotting analyses done in spreadsheet programs when you want to go back to your work or someone asks for details of your analysis.
42+
43+
44+
## Spreadsheet programs
45+
46+
Many spreadsheet programs are available. Since most participants utilize Excel as their primary spreadsheet program, this lesson will make use of Excel examples.
47+
48+
Free spreadsheet programs that can also be used are LibreOffice Calc, and even Google Sheets.
49+
50+
Commands may differ a bit between programs, but the general idea is the same.
51+
52+
Spreadsheets encompass a lot of the things we need to be able to do as researchers. We can use them for:
53+
54+
* Data entry
55+
* Organizing data
56+
* Subsetting and sorting data
57+
* Statistics
58+
* Plotting
59+
60+
We do a lot of different operations in spreadsheets. What kind of operations do you do in spreadsheets? Which ones do you think spreadsheets are good for?
61+
62+
## Problems with Spreadsheets
63+
64+
Spreadsheets are good for data entry, but in reality we tend to use spreadsheet programs for much more than data entry. We use them to create data tables for publications, to generate summary statistics, and make figures.
65+
66+
Generating tables for publications in a spreadsheet is not optimal - often, when formatting a data table for publication, we're reporting key summary statistics in a way that is not really meant to be read as data, and often involves special formatting (merging cells, creating borders, making it pretty). Cutting and pasting from a spreadsheet to a document software (like Word) can have unpredictable results. We advise you to create tables within these document software using the document's own table editing software.
67+
68+
The latter two applications, generating statistics and figures, should be used with caution: because of the graphical, drag and drop nature of spreadsheet programs, it can be very difficult, if not impossible, to replicate your steps (much less retrace anyone else's), particularly if your stats or figures require you to do more complex calculations. Furthermore, in doing calculations in a spreadsheet, it's easy to accidentally apply a slightly different formula to multiple adjacent cells. When using a command-line based statistics program like R or SAS, it's practically impossible to apply a calculation to one observation in your data set but not another unless you're doing it on purpose.
69+
70+
## Using Spreadsheets for Data Entry and Cleaning
71+
72+
However, there are circumstances where you might want to use a spreadsheet program to produce “quick and dirty” calculations or figures, and data cleaning will help you use some of these features. Data cleaning also puts your data in a better format prior to importation into a statistical analysis program. We will show you how to use some features of spreadsheet programs to check your data quality along the way and produce preliminary summary statistics.
73+
74+
In this lesson, we will assume that you are most likely using Excel as your primary spreadsheet program - there are others (gnumeric, Calc from OpenOffice), and their functionality is similar, but Excel seems to be the program most used by biologists and ecologists.
75+
76+
In this lesson we're going to talk about:
77+
78+
1. [Formatting data tables in spreadsheets](../formattingtables/index.qmd)
79+
2. [Formatting problems](../formattingproblems/index.qmd)
80+
3. [Dates as data](../datesasdata/index.qmd)
81+
4. [Quality control](../qualitycontrol/index.qmd)
82+
5. [Exporting data](../exporting/index.qmd)
83+
84+
## Key Points
85+
* Good data organization is the foundation of any research project.
86+
87+
Licensed under [CC-BY 4.0 2018–2022](https://datacarpentry.org/spreadsheet-ecology-lesson/00-intro/index.html) by [The Carpentries](https://carpentries.org/)
88+
89+
Licensed under [CC-BY 4.0 2016–2018](https://datacarpentry.org/spreadsheet-ecology-lesson/00-intro/index.html) by [Data Carpentry](http://datacarpentry.org/)

docs/EcologyLesson/datesasdata/index.html

Lines changed: 19 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
33

44
<meta charset="utf-8">
5-
<meta name="generator" content="quarto-1.6.40">
5+
<meta name="generator" content="quarto-1.4.554">
66

77
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
88

@@ -35,10 +35,10 @@
3535
<script src="../../site_libs/quarto-html/tippy.umd.min.js"></script>
3636
<script src="../../site_libs/quarto-html/anchor.min.js"></script>
3737
<link href="../../site_libs/quarto-html/tippy.css" rel="stylesheet">
38-
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting-549806ee2085284f45b00abea8c6df48.css" rel="stylesheet" id="quarto-text-highlighting-styles">
38+
<link href="../../site_libs/quarto-html/quarto-syntax-highlighting.css" rel="stylesheet" id="quarto-text-highlighting-styles">
3939
<script src="../../site_libs/bootstrap/bootstrap.min.js"></script>
4040
<link href="../../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
41-
<link href="../../site_libs/bootstrap/bootstrap-3ed3a85e8781f68cd9162943f395acec.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
41+
<link href="../../site_libs/bootstrap/bootstrap.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="light">
4242
<script id="quarto-search-options" type="application/json">{
4343
"location": "navbar",
4444
"copy-button": false,
@@ -78,7 +78,7 @@
7878
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
7979
<div class="navbar-container container-fluid">
8080
<div id="quarto-search" class="" title="Search"></div>
81-
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Toggle navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
81+
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
8282
<span class="navbar-toggler-icon"></span>
8383
</button>
8484
<div class="collapse navbar-collapse" id="navbarCollapse">
@@ -113,7 +113,7 @@
113113
</li>
114114
</ul>
115115
</div> <!-- /navcollapse -->
116-
<div class="quarto-navbar-tools tools-wide">
116+
<div class="quarto-navbar-tools tools-wide">
117117
<a href="https://www.youtube.com/STEMcoding" title="" class="quarto-navigation-tool px-1" aria-label=""><i class="bi bi-youtube"></i></a>
118118
<a href="https://www.instagram.com/stemcoding/" title="" class="quarto-navigation-tool px-1" aria-label=""><i class="bi bi-instagram"></i></a>
119119
<a href="https://www.facebook.com/stemcodingproject" title="" class="quarto-navigation-tool px-1" aria-label=""><i class="bi bi-facebook"></i></a>
@@ -345,7 +345,18 @@ <h2 class="anchored" data-anchor-id="key-points">Key Points</h2>
345345
}
346346
return false;
347347
}
348-
const onCopySuccess = function(e) {
348+
const clipboard = new window.ClipboardJS('.code-copy-button', {
349+
text: function(trigger) {
350+
const codeEl = trigger.previousElementSibling.cloneNode(true);
351+
for (const childEl of codeEl.children) {
352+
if (isCodeAnnotation(childEl)) {
353+
childEl.remove();
354+
}
355+
}
356+
return codeEl.innerText;
357+
}
358+
});
359+
clipboard.on('success', function(e) {
349360
// button target
350361
const button = e.trigger;
351362
// don't keep focus
@@ -377,35 +388,15 @@ <h2 class="anchored" data-anchor-id="key-points">Key Points</h2>
377388
}, 1000);
378389
// clear code selection
379390
e.clearSelection();
380-
}
381-
const getTextToCopy = function(trigger) {
382-
const codeEl = trigger.previousElementSibling.cloneNode(true);
383-
for (const childEl of codeEl.children) {
384-
if (isCodeAnnotation(childEl)) {
385-
childEl.remove();
386-
}
387-
}
388-
return codeEl.innerText;
389-
}
390-
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
391-
text: getTextToCopy
392391
});
393-
clipboard.on('success', onCopySuccess);
394-
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
395-
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
396-
text: getTextToCopy,
397-
container: window.document.getElementById('quarto-embedded-source-code-modal')
398-
});
399-
clipboardModal.on('success', onCopySuccess);
400-
}
401392
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
402393
var mailtoRegex = new RegExp(/^mailto:/);
403394
var filterRegex = new RegExp('/' + window.location.host + '/');
404395
var isInternal = (href) => {
405396
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
406397
}
407398
// Inspect non-navigation links and adorn them if external
408-
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)');
399+
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)');
409400
for (var i=0; i<links.length; i++) {
410401
const link = links[i];
411402
if (!isInternal(link.href)) {
@@ -502,6 +493,7 @@ <h2 class="anchored" data-anchor-id="key-points">Key Points</h2>
502493
if (window.Quarto?.typesetMath) {
503494
window.Quarto.typesetMath(note);
504495
}
496+
// TODO in 1.5, we should make sure this works without a callout special case
505497
if (note.classList.contains("callout")) {
506498
return note.outerHTML;
507499
} else {

0 commit comments

Comments
 (0)