{ "cells": [ { "cell_type": "markdown", "id": "accurate-paint", "metadata": {}, "source": [ "\n", "# R Introduction\n", "\n", "-----------------------\n", "\n", "BIO401-01/598-02 \n", " \n", "Mar. 17 2021\n", "\n" ] }, { "cell_type": "markdown", "id": "deluxe-moisture", "metadata": {}, "source": [ "\n", "\n", " R is a script language for statistical data analysis and manipulation. \n", " \n", " home page : https://cran.r-project.org/" ] }, { "cell_type": "markdown", "id": "marine-trail", "metadata": {}, "source": [ "## How to run \n", "\n", "1. batch mode\n", "\n", " $ R CMD BATCH script.R\n", " \n", "help for the batch mode \n", "\n", " $ R CMD command --help \n", "\n", "for example \n", "\n", " $ R CMD INSTALL --help \n", "\n", "2. interactive mode\n", "\n", "console : \">\" as the R prompt\n", "\n", "common IDE (integrated development environment) for R \n", "\n", "- R studio \n", "- Jupyter-notebook \n", "- ESS(emacs speaks statistics) \n", "- R commander, etc." ] }, { "cell_type": "markdown", "id": "swedish-ensemble", "metadata": {}, "source": [ "## Installing packages\n", "\n", " > install.packages(\"package_name\")\n", " \n", " > install.packages(c(\"ggplot2\",\"sp\",\"raster\"))" ] }, { "cell_type": "markdown", "id": "focused-consideration", "metadata": {}, "source": [ "## Interfacing with the system\n", "\n", " > dir() # show files in the current directory\n", "\n", " > getwd() # is asking for the current working directory" ] }, { "cell_type": "markdown", "id": "understanding-engagement", "metadata": {}, "source": [ "## Getting help\n", "\n", "R provides help with function and commands. On-line help gives useful \n", "information as well. Getting used to R help is a key to successful \n", "statistical modelling. The online help can be accessed in HTML format by \n", "typing:\n", "\n", " > help.start()\n", " \n", "A keyword search is possible using the Search Engine and Keywords link.\n", "You can also use the help() or ? functions.\n", "\n", " > help(dir)\n", "\n", "or \n", "\n", " > ? dir " ] }, { "cell_type": "markdown", "id": "moral-point", "metadata": {}, "source": [ "## As a caculator" ] }, { "cell_type": "code", "execution_count": 1, "id": "tough-madrid", "metadata": {}, "outputs": [ { "data": { "text/html": [ "8" ], "text/latex": [ "8" ], "text/markdown": [ "8" ], "text/plain": [ "[1] 8" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "3 + 5 " ] }, { "cell_type": "code", "execution_count": 2, "id": "sensitive-character", "metadata": {}, "outputs": [ { "data": { "text/html": [ "1" ], "text/latex": [ "1" ], "text/markdown": [ "1" ], "text/plain": [ "[1] 1" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sin(pi/2)" ] }, { "cell_type": "code", "execution_count": 13, "id": "chubby-water", "metadata": {}, "outputs": [ { "data": { "text/html": [ "8" ], "text/latex": [ "8" ], "text/markdown": [ "8" ], "text/plain": [ "[1] 8" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "2^3" ] }, { "cell_type": "code", "execution_count": 31, "id": "ready-sacrifice", "metadata": {}, "outputs": [ { "data": { "text/html": [ "1.66666666666667" ], "text/latex": [ "1.66666666666667" ], "text/markdown": [ "1.66666666666667" ], "text/plain": [ "[1] 1.666667" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "5/3" ] }, { "cell_type": "code", "execution_count": 33, "id": "legal-annex", "metadata": {}, "outputs": [ { "data": { "text/html": [ "2" ], "text/latex": [ "2" ], "text/markdown": [ "2" ], "text/plain": [ "[1] 2" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "5%%3" ] }, { "cell_type": "code", "execution_count": 1, "id": "suburban-lexington", "metadata": {}, "outputs": [ { "data": { "text/html": [ "1" ], "text/latex": [ "1" ], "text/markdown": [ "1" ], "text/plain": [ "[1] 1" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "5%/%3" ] }, { "cell_type": "markdown", "id": "artistic-clone", "metadata": {}, "source": [ "## Logic Operations\n", "\n", "- AND operator &\n", "- OR operator |\n", "- NOT operator !" ] }, { "cell_type": "code", "execution_count": 1, "id": "abroad-sword", "metadata": {}, "outputs": [ { "data": { "text/html": [ "TRUE" ], "text/latex": [ "TRUE" ], "text/markdown": [ "TRUE" ], "text/plain": [ "[1] TRUE" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "12 > 5 & 12 < 15" ] }, { "cell_type": "code", "execution_count": 2, "id": "formal-principal", "metadata": {}, "outputs": [ { "data": { "text/html": [ "FALSE" ], "text/latex": [ "FALSE" ], "text/markdown": [ "FALSE" ], "text/plain": [ "[1] FALSE" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "! TRUE" ] }, { "cell_type": "code", "execution_count": 3, "id": "military-citation", "metadata": {}, "outputs": [ { "data": { "text/html": [ "TRUE" ], "text/latex": [ "TRUE" ], "text/markdown": [ "TRUE" ], "text/plain": [ "[1] TRUE" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "TRUE | FALSE" ] }, { "cell_type": "markdown", "id": "treated-recycling", "metadata": {}, "source": [ "## Data structures \n", "\n", "R objects\n", " \n", "The entities R operates on are technically known as objects. \n", "Examples are \"vectors of numeric (real)\" or \"complex values\", \"vectors of \n", "logical\" values and \"vectors of character strings\". \n", "These are known as “atomic” structures since their components are all of \n", "the same type, or mode, namely numeric, complex, logical, character and raw.\n", "R also operates on objects called \"lists\", which are of mode list. \n", "These are ordered sequences of objects which individually can be of any mode. \n", "Lists are known as “recursive” rather than atomic structures since their \n", "components can themselves be lists in their own right.\n", "The other recursive structures are those of mode function and expression. \n", "\n", "By the \"mode\" of an object we mean the basic type of its fundamental \n", "constituents. This is a special case of a “property” of an object. Another\n", "property of every object is its \"length.\" The functions mode(object) and \n", "length(object) can be used \n", "to find out the mode and length of any defined structure 10.\n", "\n", "Further properties of an object are usually provided by attributes(object). \n", "Because of this, mode and length are also called “intrinsic attributes” of an object. \n", "For example, if z is a complex vector of length 100, then in an expression mode(z) \n", "is the character string \"complex\" and length(z) is 100." ] }, { "cell_type": "markdown", "id": "moral-scotland", "metadata": {}, "source": [ "### vectors : the heart of R\n", "\n", "Vectors are combinations of scalars in a string structure. Vectors must have \n", "all values of the same mode. Thus any given vector must be unambiguously \n", "either logical, numeric, complex, character or raw. (The only apparent \n", "exception to this rule is the special “value” listed as NA for quantities not\n", "available, but in fact there are several types of NA). Note that a vector can\n", "be empty and still have a mode. For example the empty character string vector\n", "is listed as character(0) and the empty numeric vector as numeric(0). \n", "\n", " > help(vector)" ] }, { "cell_type": "code", "execution_count": 6, "id": "future-standard", "metadata": {}, "outputs": [], "source": [ "# \"<-\" is the assignment operator in R.\n", "# \"c\" stands for concatenate. \n", "\n", "x <- c(1,5,8)" ] }, { "cell_type": "code", "execution_count": 7, "id": "verified-pixel", "metadata": {}, "outputs": [ { "data": { "text/html": [ "1" ], "text/latex": [ "1" ], "text/markdown": [ "1" ], "text/plain": [ "[1] 1" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
  1. 5
  2. 8
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 5\n", "\\item 8\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 5\n", "2. 8\n", "\n", "\n" ], "text/plain": [ "[1] 5 8" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# subsetting operation\n", "# \"[]\" used to retrieve vector elements \n", "# \":\" used to give a range for retrieval\n", "x[1]\n", "x[2:3]" ] }, { "cell_type": "code", "execution_count": 8, "id": "adjacent-kansas", "metadata": {}, "outputs": [ { "data": { "text/html": [ "3" ], "text/latex": [ "3" ], "text/markdown": [ "3" ], "text/plain": [ "[1] 3" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "length(x)" ] }, { "cell_type": "code", "execution_count": 9, "id": "intense-dealer", "metadata": {}, "outputs": [ { "data": { "text/html": [ "'numeric'" ], "text/latex": [ "'numeric'" ], "text/markdown": [ "'numeric'" ], "text/plain": [ "[1] \"numeric\"" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mode(x)" ] }, { "cell_type": "code", "execution_count": 30, "id": "fewer-single", "metadata": {}, "outputs": [ { "data": { "text/html": [ "3.5" ], "text/latex": [ "3.5" ], "text/markdown": [ "3.5" ], "text/plain": [ "[1] 3.5" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "3.5" ], "text/latex": [ "3.5" ], "text/markdown": [ "3.5" ], "text/plain": [ "[1] 3.5" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# scalar not really exist in R \n", "# individual numbers actually single element vectors \n", "\n", "x <- 3.5\n", "x\n", "x[1]" ] }, { "cell_type": "markdown", "id": "turkish-collar", "metadata": {}, "source": [ "Two common functions we can use to generate a sequence. \n", "\n", "The seq() function \"seq(from = number, to = number, by = number)\" allow to \n", "create a vector starting from a value to another by a defined increment:\n", " \n", "The replicate function \"rep(x,times)\" enables you to replicate a vector \n", "several times in a more complex vector. Calculations can be included to \n", "form vectors as well and functions can be combined in the same command." ] }, { "cell_type": "code", "execution_count": 16, "id": "intellectual-advocacy", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 1\n", "\\item 2\n", "\\item 3\n", "\\item 4\n", "\\item 5\n", "\\item 6\n", "\\item 7\n", "\\item 8\n", "\\item 9\n", "\\item 10\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 1\n", "2. 2\n", "3. 3\n", "4. 4\n", "5. 5\n", "6. 6\n", "7. 7\n", "8. 8\n", "9. 9\n", "10. 10\n", "\n", "\n" ], "text/plain": [ " [1] 1 2 3 4 5 6 7 8 9 10" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "1:10" ] }, { "cell_type": "code", "execution_count": 11, "id": "practical-entrepreneur", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
  1. 1
  2. 1.25
  3. 1.5
  4. 1.75
  5. 2
  6. 2.25
  7. 2.5
  8. 2.75
  9. 3
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 1\n", "\\item 1.25\n", "\\item 1.5\n", "\\item 1.75\n", "\\item 2\n", "\\item 2.25\n", "\\item 2.5\n", "\\item 2.75\n", "\\item 3\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 1\n", "2. 1.25\n", "3. 1.5\n", "4. 1.75\n", "5. 2\n", "6. 2.25\n", "7. 2.5\n", "8. 2.75\n", "9. 3\n", "\n", "\n" ], "text/plain": [ "[1] 1.00 1.25 1.50 1.75 2.00 2.25 2.50 2.75 3.00" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "seq(1,3,0.25)" ] }, { "cell_type": "code", "execution_count": 1, "id": "derived-lewis", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
  1. 1
  2. 2
  3. 3
  4. 1
  5. 2
  6. 3
  7. 1
  8. 2
  9. 3
  10. 1
  11. 2
  12. 3
  13. 1
  14. 2
  15. 3
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 1\n", "\\item 2\n", "\\item 3\n", "\\item 1\n", "\\item 2\n", "\\item 3\n", "\\item 1\n", "\\item 2\n", "\\item 3\n", "\\item 1\n", "\\item 2\n", "\\item 3\n", "\\item 1\n", "\\item 2\n", "\\item 3\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 1\n", "2. 2\n", "3. 3\n", "4. 1\n", "5. 2\n", "6. 3\n", "7. 1\n", "8. 2\n", "9. 3\n", "10. 1\n", "11. 2\n", "12. 3\n", "13. 1\n", "14. 2\n", "15. 3\n", "\n", "\n" ], "text/plain": [ " [1] 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "one2three <- 1:3 \n", "rep(one2three,5) " ] }, { "cell_type": "markdown", "id": "thrown-milton", "metadata": {}, "source": [ "### Missing Values\n", "\n", "In some cases the components of a vector or of an R object more in general, \n", "may not be completely known. When an element or value is “not available” \n", "or a “missing value” in the statistical sense, a place within a vector may\n", "be reserved for it by assigning it the special value NA. Any operation on \n", "an NA becomes an NA. \n", "\n", "The function is.na(x) gives a logical vector of the same size as x with \n", "value TRUE if and only if the corresponding element in x is NA.\n", "\n", "Functions : dealing with NAs\n", "\n", "na.fail returns the object if it does not contain any missing values, and signals an error otherwise. \n", "\n", "na.omit returns the object with incomplete cases removed. \n", "\n", "na.pass returns the object unchanged." ] }, { "cell_type": "code", "execution_count": 90, "id": "colonial-ridge", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
  1. FALSE
  2. FALSE
  3. FALSE
  4. TRUE
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item FALSE\n", "\\item FALSE\n", "\\item FALSE\n", "\\item TRUE\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. FALSE\n", "2. FALSE\n", "3. FALSE\n", "4. TRUE\n", "\n", "\n" ], "text/plain": [ "[1] FALSE FALSE FALSE TRUE" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "z <- c(1:3,NA)\n", "ind <- is.na(z)\n", "ind" ] }, { "cell_type": "markdown", "id": "applicable-hamilton", "metadata": {}, "source": [ "There is a second kind of “missing” values which are produced by numerical \n", "computation, the so-called Not a Number, NaN , values. \n", "\n", "Examples are 0/0 \n", "or Inf - Inf which both give NaN since the result cannot be defined sensibly." ] }, { "cell_type": "code", "execution_count": 22, "id": "serial-breath", "metadata": {}, "outputs": [ { "data": { "text/html": [ "NaN" ], "text/latex": [ "NaN" ], "text/markdown": [ "NaN" ], "text/plain": [ "[1] NaN" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "NaN" ], "text/latex": [ "NaN" ], "text/markdown": [ "NaN" ], "text/plain": [ "[1] NaN" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "Inf-Inf\n", "0/0" ] }, { "cell_type": "markdown", "id": "cardiac-regression", "metadata": {}, "source": [ "is.na(xx) is TRUE both for NA and NaN values. To differentiate \n", "these, is.nan(xx) is only TRUE for NaNs. Missing values are sometimes printed\n", "as when character vectors are printed without quotes. " ] }, { "cell_type": "code", "execution_count": 24, "id": "touched-defendant", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
  1. FALSE
  2. FALSE
  3. FALSE
  4. FALSE
  5. TRUE
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item FALSE\n", "\\item FALSE\n", "\\item FALSE\n", "\\item FALSE\n", "\\item TRUE\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. FALSE\n", "2. FALSE\n", "3. FALSE\n", "4. FALSE\n", "5. TRUE\n", "\n", "\n" ], "text/plain": [ "[1] FALSE FALSE FALSE FALSE TRUE" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
  1. FALSE
  2. FALSE
  3. FALSE
  4. TRUE
  5. TRUE
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item FALSE\n", "\\item FALSE\n", "\\item FALSE\n", "\\item TRUE\n", "\\item TRUE\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. FALSE\n", "2. FALSE\n", "3. FALSE\n", "4. TRUE\n", "5. TRUE\n", "\n", "\n" ], "text/plain": [ "[1] FALSE FALSE FALSE TRUE TRUE" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "z <- c(1:3,NA,0/0)\n", "is.not.available <- is.na(z) \n", "is.not.a.number <-is.nan(z)\n", "\n", "is.not.a.number\n", "is.not.available " ] }, { "cell_type": "markdown", "id": "czech-azerbaijan", "metadata": {}, "source": [ "On the other hand, NULL represent the value does not exit. " ] }, { "cell_type": "code", "execution_count": 3, "id": "criminal-thing", "metadata": {}, "outputs": [ { "data": { "text/html": [ "<NA>" ], "text/latex": [ "" ], "text/markdown": [ "<NA>" ], "text/plain": [ "[1] NA" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x <- c(1,2,3,NA)\n", "mean(x)" ] }, { "cell_type": "code", "execution_count": 4, "id": "pediatric-cause", "metadata": {}, "outputs": [ { "data": { "text/html": [ "2" ], "text/latex": [ "2" ], "text/markdown": [ "2" ], "text/plain": [ "[1] 2" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mean(x,na.rm=TRUE)" ] }, { "cell_type": "code", "execution_count": 1, "id": "statutory-roommate", "metadata": {}, "outputs": [ { "data": { "text/html": [ "2" ], "text/latex": [ "2" ], "text/markdown": [ "2" ], "text/plain": [ "[1] 2" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "y <- c(1,2,3,NULL)\n", "mean(y)" ] }, { "cell_type": "code", "execution_count": 99, "id": "liquid-correlation", "metadata": {}, "outputs": [ { "ename": "ERROR", "evalue": "Error in na.fail.default(x): missing values in object\n", "output_type": "error", "traceback": [ "Error in na.fail.default(x): missing values in object\nTraceback:\n", "1. na.fail(x)", "2. na.fail.default(x)", "3. stop(\"missing values in object\")" ] } ], "source": [ "na.fail(x)" ] }, { "cell_type": "code", "execution_count": 100, "id": "behavioral-ladder", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
  1. 1
  2. 2
  3. 3
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 1\n", "\\item 2\n", "\\item 3\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 1\n", "2. 2\n", "3. 3\n", "\n", "\n" ], "text/plain": [ "[1] 1 2 3" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "na.fail(y)" ] }, { "cell_type": "markdown", "id": "equal-regard", "metadata": {}, "source": [ "#### Exercise\n", "\n", "creat a sequence as below and compute its mean\n", "\n", "```\n", "10 20 30 10 20 30 50 50 50 NA NA NA 10 10 10 \n", "```" ] }, { "cell_type": "markdown", "id": "linear-hawaiian", "metadata": {}, "source": [ "### Working with strings\n", "\n", "character strings : single element vectors \n", "\n", "mode : check datatype " ] }, { "cell_type": "code", "execution_count": 38, "id": "divided-craft", "metadata": {}, "outputs": [ { "data": { "text/html": [ "'character'" ], "text/latex": [ "'character'" ], "text/markdown": [ "'character'" ], "text/plain": [ "[1] \"character\"" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "1" ], "text/latex": [ "1" ], "text/markdown": [ "1" ], "text/plain": [ "[1] 1" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x <- \"hello\"\n", "mode(x)\n", "length(x)" ] }, { "cell_type": "code", "execution_count": 3, "id": "sophisticated-heater", "metadata": {}, "outputs": [ { "data": { "text/html": [ "'hello world'" ], "text/latex": [ "'hello world'" ], "text/markdown": [ "'hello world'" ], "text/plain": [ "[1] \"hello world\"" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# concatenate strings \n", "\n", "paste(\"hello\",\"world\")" ] }, { "cell_type": "code", "execution_count": 2, "id": "complex-roads", "metadata": {}, "outputs": [ { "data": { "text/html": [ "'helloworld'" ], "text/latex": [ "'helloworld'" ], "text/markdown": [ "'helloworld'" ], "text/plain": [ "[1] \"helloworld\"" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# if you don't want any space between the strings, you can use paste0\n", "\n", "paste0 (\"hello\",\"world\")" ] }, { "cell_type": "code", "execution_count": 5, "id": "underlying-series", "metadata": {}, "outputs": [ { "data": { "text/html": [ "' world'" ], "text/latex": [ "' world'" ], "text/markdown": [ "' world'" ], "text/plain": [ "[1] \" world\"" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# substr is used to get parts of a string \n", "\n", "substr(\"Hello world\", 6,11)" ] }, { "cell_type": "code", "execution_count": 6, "id": "requested-montana", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
  1. 1
  2. 3
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 1\n", "\\item 3\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 1\n", "2. 3\n", "\n", "\n" ], "text/plain": [ "[1] 1 3" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# grep : retrieval based on certain pattern \n", "\n", "timespan <- c(\"day\",\"month\",\"year\")\n", "grep('y', timespan)" ] }, { "cell_type": "code", "execution_count": 7, "id": "handmade-jacket", "metadata": {}, "outputs": [ { "data": { "text/html": [ "2" ], "text/latex": [ "2" ], "text/markdown": [ "2" ], "text/plain": [ "[1] 2" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# ^ : start with\n", "\n", "grep('^m', timespan)" ] }, { "cell_type": "code", "execution_count": 41, "id": "stopped-island", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
  1. 50
  2. 45
  3. 40
  4. 35
  5. 30
  6. 25
  7. 20
  8. 15
  9. 10
  10. 5
  11. 5
  12. 6
  13. 50
  14. 45
  15. 40
  16. 35
  17. 30
  18. 25
  19. 20
  20. 15
  21. 10
  22. 5
  23. 5
  24. 6
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 50\n", "\\item 45\n", "\\item 40\n", "\\item 35\n", "\\item 30\n", "\\item 25\n", "\\item 20\n", "\\item 15\n", "\\item 10\n", "\\item 5\n", "\\item 5\n", "\\item 6\n", "\\item 50\n", "\\item 45\n", "\\item 40\n", "\\item 35\n", "\\item 30\n", "\\item 25\n", "\\item 20\n", "\\item 15\n", "\\item 10\n", "\\item 5\n", "\\item 5\n", "\\item 6\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 50\n", "2. 45\n", "3. 40\n", "4. 35\n", "5. 30\n", "6. 25\n", "7. 20\n", "8. 15\n", "9. 10\n", "10. 5\n", "11. 5\n", "12. 6\n", "13. 50\n", "14. 45\n", "15. 40\n", "16. 35\n", "17. 30\n", "18. 25\n", "19. 20\n", "20. 15\n", "21. 10\n", "22. 5\n", "23. 5\n", "24. 6\n", "\n", "\n" ], "text/plain": [ " [1] 50 45 40 35 30 25 20 15 10 5 5 6 50 45 40 35 30 25 20 15 10 5 5 6" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "numeric.vector <- c(rep(c (5*10:1, 5, 6), 2))\n", "numeric.vector" ] }, { "cell_type": "code", "execution_count": 43, "id": "sitting-minority", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
  1. '50'
  2. '45'
  3. '40'
  4. '35'
  5. '30'
  6. '25'
  7. '20'
  8. '15'
  9. '10'
  10. '5'
  11. '5'
  12. '6'
  13. '50'
  14. '45'
  15. '40'
  16. '35'
  17. '30'
  18. '25'
  19. '20'
  20. '15'
  21. '10'
  22. '5'
  23. '5'
  24. '6'
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item '50'\n", "\\item '45'\n", "\\item '40'\n", "\\item '35'\n", "\\item '30'\n", "\\item '25'\n", "\\item '20'\n", "\\item '15'\n", "\\item '10'\n", "\\item '5'\n", "\\item '5'\n", "\\item '6'\n", "\\item '50'\n", "\\item '45'\n", "\\item '40'\n", "\\item '35'\n", "\\item '30'\n", "\\item '25'\n", "\\item '20'\n", "\\item '15'\n", "\\item '10'\n", "\\item '5'\n", "\\item '5'\n", "\\item '6'\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. '50'\n", "2. '45'\n", "3. '40'\n", "4. '35'\n", "5. '30'\n", "6. '25'\n", "7. '20'\n", "8. '15'\n", "9. '10'\n", "10. '5'\n", "11. '5'\n", "12. '6'\n", "13. '50'\n", "14. '45'\n", "15. '40'\n", "16. '35'\n", "17. '30'\n", "18. '25'\n", "19. '20'\n", "20. '15'\n", "21. '10'\n", "22. '5'\n", "23. '5'\n", "24. '6'\n", "\n", "\n" ], "text/plain": [ " [1] \"50\" \"45\" \"40\" \"35\" \"30\" \"25\" \"20\" \"15\" \"10\" \"5\" \"5\" \"6\" \"50\" \"45\" \"40\"\n", "[16] \"35\" \"30\" \"25\" \"20\" \"15\" \"10\" \"5\" \"5\" \"6\" " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "character.vector <- as.character(numeric.vector)\n", "character.vector" ] }, { "cell_type": "markdown", "id": "deluxe-daily", "metadata": {}, "source": [ "#### Exercise\n", "\n", "retreive the position of the 2nd \"to\" in the quatation in the sentence below, replace it with \"T\" and reprint the whole sentence.\n", "\n", "```\n", "“All we have to decide is what to do with the time that is given us.”\n", "\n", "― J.R.R. Tolkien, The Fellowship of the Ring\n", "```" ] }, { "cell_type": "markdown", "id": "respiratory-railway", "metadata": {}, "source": [ "### Factors\n", "\n", "A factor is a variable to represent categories of a set. They can created using the function as.factor(). " ] }, { "cell_type": "code", "execution_count": 9, "id": "australian-thirty", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
  1. Korea
  2. China
  3. UK
  4. UK
  5. USA
  6. Japan
  7. Korea
\n", "\n", "
\n", "\t\n", "\t\tLevels:\n", "\t\n", "\t\n", "\t
  1. 'China'
  2. 'Japan'
  3. 'Korea'
  4. 'UK'
  5. 'USA'
\n", "
" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item Korea\n", "\\item China\n", "\\item UK\n", "\\item UK\n", "\\item USA\n", "\\item Japan\n", "\\item Korea\n", "\\end{enumerate*}\n", "\n", "\\emph{Levels}: \\begin{enumerate*}\n", "\\item 'China'\n", "\\item 'Japan'\n", "\\item 'Korea'\n", "\\item 'UK'\n", "\\item 'USA'\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. Korea\n", "2. China\n", "3. UK\n", "4. UK\n", "5. USA\n", "6. Japan\n", "7. Korea\n", "\n", "\n", "\n", "**Levels**: 1. 'China'\n", "2. 'Japan'\n", "3. 'Korea'\n", "4. 'UK'\n", "5. 'USA'\n", "\n", "\n" ], "text/plain": [ "[1] Korea China UK UK USA Japan Korea\n", "Levels: China Japan Korea UK USA" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "countries <- c(\"Korea\", \"China\", \"UK\", \"UK\", \"USA\", \"Japan\", \"Korea\")\n", "as.factor(countries)" ] }, { "cell_type": "code", "execution_count": 10, "id": "radical-evanescence", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
  1. 1
  2. 2
  3. 3
  4. 2
  5. 3
  6. 4
  7. 5
  8. 1
  9. 2
  10. 3
  11. 4
  12. 5
  13. 6
  14. 7
  15. 8
\n", "\n", "
\n", "\t\n", "\t\tLevels:\n", "\t\n", "\t\n", "\t
  1. '1'
  2. '2'
  3. '3'
  4. '4'
  5. '5'
  6. '6'
  7. '7'
  8. '8'
\n", "
" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 1\n", "\\item 2\n", "\\item 3\n", "\\item 2\n", "\\item 3\n", "\\item 4\n", "\\item 5\n", "\\item 1\n", "\\item 2\n", "\\item 3\n", "\\item 4\n", "\\item 5\n", "\\item 6\n", "\\item 7\n", "\\item 8\n", "\\end{enumerate*}\n", "\n", "\\emph{Levels}: \\begin{enumerate*}\n", "\\item '1'\n", "\\item '2'\n", "\\item '3'\n", "\\item '4'\n", "\\item '5'\n", "\\item '6'\n", "\\item '7'\n", "\\item '8'\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 1\n", "2. 2\n", "3. 3\n", "4. 2\n", "5. 3\n", "6. 4\n", "7. 5\n", "8. 1\n", "9. 2\n", "10. 3\n", "11. 4\n", "12. 5\n", "13. 6\n", "14. 7\n", "15. 8\n", "\n", "\n", "\n", "**Levels**: 1. '1'\n", "2. '2'\n", "3. '3'\n", "4. '4'\n", "5. '5'\n", "6. '6'\n", "7. '7'\n", "8. '8'\n", "\n", "\n" ], "text/plain": [ " [1] 1 2 3 2 3 4 5 1 2 3 4 5 6 7 8\n", "Levels: 1 2 3 4 5 6 7 8" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# factor can work on numbers also. \n", "fnum <- c(1:3,2:5,1:8)\n", "as.factor(fnum)" ] }, { "cell_type": "markdown", "id": "athletic-force", "metadata": {}, "source": [ "### Set Operations \n", "\n", " union(x,y) \n", " intersect(x,y)\n", " setdiff(x,y) : all elements of x NOT in y\n", " setequal(x,y)\n", " c %in% x : membership testing " ] }, { "cell_type": "code", "execution_count": 27, "id": "moral-toronto", "metadata": {}, "outputs": [], "source": [ "x <- c(1, 3, 5, 8, 10)\n", "y <- c(3, 4, 5, 6, 7)" ] }, { "cell_type": "code", "execution_count": 29, "id": "complicated-girlfriend", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
  1. 1
  2. 3
  3. 5
  4. 8
  5. 10
  6. 4
  7. 6
  8. 7
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 1\n", "\\item 3\n", "\\item 5\n", "\\item 8\n", "\\item 10\n", "\\item 4\n", "\\item 6\n", "\\item 7\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 1\n", "2. 3\n", "3. 5\n", "4. 8\n", "5. 10\n", "6. 4\n", "7. 6\n", "8. 7\n", "\n", "\n" ], "text/plain": [ "[1] 1 3 5 8 10 4 6 7" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
  1. 3
  2. 5
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 3\n", "\\item 5\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 3\n", "2. 5\n", "\n", "\n" ], "text/plain": [ "[1] 3 5" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
  1. 1
  2. 8
  3. 10
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 1\n", "\\item 8\n", "\\item 10\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 1\n", "2. 8\n", "3. 10\n", "\n", "\n" ], "text/plain": [ "[1] 1 8 10" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "FALSE" ], "text/latex": [ "FALSE" ], "text/markdown": [ "FALSE" ], "text/plain": [ "[1] FALSE" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "union(x,y)\n", "intersect(x,y)\n", "setdiff(x,y)\n", "setequal(x,y)" ] }, { "cell_type": "code", "execution_count": 30, "id": "intimate-wyoming", "metadata": {}, "outputs": [ { "data": { "text/html": [ "FALSE" ], "text/latex": [ "FALSE" ], "text/markdown": [ "FALSE" ], "text/plain": [ "[1] FALSE" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "7 %in% x" ] }, { "cell_type": "markdown", "id": "vocal-leonard", "metadata": {}, "source": [ "### List : contains that can hold different types \n", "\n", "Lists are a general form of vector in which the various elements need not be \n", "of the same type, and are often themselves vectors or lists. Lists provide a \n", "convenient way to return the results of a statistical computation." ] }, { "cell_type": "code", "execution_count": 26, "id": "tight-florist", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\t
$w
\n", "\t\t
2
\n", "\t
$v
\n", "\t\t
'GIS'
\n", "
\n" ], "text/latex": [ "\\begin{description}\n", "\\item[\\$w] 2\n", "\\item[\\$v] 'GIS'\n", "\\end{description}\n" ], "text/markdown": [ "$w\n", ": 2\n", "$v\n", ": 'GIS'\n", "\n", "\n" ], "text/plain": [ "$w\n", "[1] 2\n", "\n", "$v\n", "[1] \"GIS\"\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x <- list(w=2, v=\"GIS\")\n", "x" ] }, { "cell_type": "code", "execution_count": 27, "id": "convinced-statement", "metadata": {}, "outputs": [ { "data": { "text/html": [ "2" ], "text/latex": [ "2" ], "text/markdown": [ "2" ], "text/plain": [ "[1] 2" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# $ sign used to access list elements by names\n", "x$w" ] }, { "cell_type": "code", "execution_count": 62, "id": "hindu-korea", "metadata": {}, "outputs": [ { "data": { "text/html": [ "'list'" ], "text/latex": [ "'list'" ], "text/markdown": [ "'list'" ], "text/plain": [ "[1] \"list\"" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "'character'" ], "text/latex": [ "'character'" ], "text/markdown": [ "'character'" ], "text/plain": [ "[1] \"character\"" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mode(x)\n", "mode(c(x$w,x$v))" ] }, { "cell_type": "code", "execution_count": 65, "id": "fixed-solution", "metadata": {}, "outputs": [ { "data": { "text/html": [ "'character'" ], "text/latex": [ "'character'" ], "text/markdown": [ "'character'" ], "text/plain": [ "[1] \"character\"" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "'character'" ], "text/latex": [ "'character'" ], "text/markdown": [ "'character'" ], "text/plain": [ "[1] \"character\"" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x <- c(2,\"GIS\")\n", "mode(x)\n", "mode(x[1])" ] }, { "cell_type": "code", "execution_count": null, "id": "magnetic-allen", "metadata": {}, "outputs": [], "source": [ "# show internal datasets \n", "\n", "data()" ] }, { "cell_type": "code", "execution_count": 3, "id": "exotic-departure", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAADAFBMVEUAAAABAQECAgIDAwME\nBAQFBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQVFRUW\nFhYXFxcYGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJyco\nKCgpKSkqKiorKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6\nOjo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tM\nTExNTU1OTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1e\nXl5fX19gYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29w\ncHBxcXFycnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGC\ngoKDg4OEhISFhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OU\nlJSVlZWWlpaXl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWm\npqanp6eoqKipqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4\nuLi5ubm6urq7u7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnK\nysrLy8vMzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc\n3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u\n7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7////i\nsF19AAAACXBIWXMAABJ0AAASdAHeZh94AAAgAElEQVR4nO3dC3xV1Z3o8ZWEJAQJDxVBBYJQ\nqzM+EMFrraUWtVIfCFU6Pq4CQof6qgzaK3bw2VZtcUSnllZbO47iVEetj2q1U4qPWq1VHHut\nj+vNoGO1IPIQBUvkkT1nn5Ps7ISTo3ud/8p6nN/382myk+x/1uZk/Zqc5JioCEDZlO0LAEJA\nSIAAQgIEEBIggJAAAYQECCAkQAAhAQIICRBASIAAQgIEEBIggJAAAYQECCAkQAAhAQIICRBA\nSIAAQgIEEBIggJAAAYQECCAkQAAhAQIICRBASIAAQgIEEBIggJAAAYQECCAkQAAhAQIICRBA\nSIAAQgIEEBIggJAAAYQECCAkQAAh9Zy7laq3tvgvDxnQOOqv3b217dKsXqHfCMmYnyil3isc\nHqHURLvb9Nnq3NWoDalL23dr/nBx+tIISRshGbNdSM3XXXfDdme9U6Ne7YGLOVupwfcs2Zq6\nNHVz/nBx+tIISRshGbNdSEV9X/VISMcodWbHS/mQdt0YHy5OXxohaSMkYz5ZSIf2TEi5K7ig\n46V8SOqK+JCQZBCSMd3eR9ry4wk79xo09qrVUXRsfkerObnXrr/y4AG1uxz1L1vyE603j+2z\n49HPvJF744dRdJNS47ee1ViTe/2dE3fp1XjwD7dF+dd+Lrr7gIamiz6KXj1+xz5HvZRePv3+\nvlZYJn0f6YtVqu/KqLv7SM1nfqp340HXbzZ/K4WCkIzpLqTNX2jb1oNfTYX0x6Ftrz10XTwx\nN39c/8Pck9Yo+jelRi9UKhfSaW1nHZ8r6WdK7XdXVfzS2W/vEj/b+d2O1Tu9vyIh/f1JSs2O\nugnp/obC+RM29dzN5TlCMqa7kH6k1N53PPXIl5X6fPTyA7mT/u3J16N1uX2/x433z+ul1OTc\nOc/kXn3A7Xd9tq9S1bkX71JqxPDa0SPjd1F944s/rVXqzvz723Xo5Dn9leo9Zfd/OKT9i7W8\nzu/vv54cp9TJTz65rePSTl5ep2peLh7S8h2UuvC15w5T6ps9eov5jJCM+YlK69itM5S6Pvds\ny+lf/+62aKUq3Ee6TKm+b0X5fa2WRdFXleq/Joo2Dsl/Goon1Z7xmxcee2z8ZeDxSp1eeO2p\nUXRf7lnv16OPPq3U4cniXd7f9veRToz+Qalji4d0bu5zUe7Z6r6q34c9dGN5j5CM6S6k3Fdt\nw299u+2k9pD2y6cRRVsH5j+v7K3UafGLF3aE9LPUu/66UkcVXvuHXJH1Sp2Se+X5Sv1NckaX\n91cspLUDlFpaNKRPKXXJppzPK7XE1K0TGkIyJg5pWFNe7/Ru/b91cVjDT7+zJUpCaq1R6p/y\n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", "text/plain": [ "Plot with title “Histogram of Nile”" ] }, "metadata": { "image/png": { "height": 420, "width": 420 } }, "output_type": "display_data" } ], "source": [ "hn <- hist(Nile)" ] }, { "cell_type": "code", "execution_count": 67, "id": "lucky-african", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "$breaks\n", " [1] 400 500 600 700 800 900 1000 1100 1200 1300 1400\n", "\n", "$counts\n", " [1] 1 0 5 20 25 19 12 11 6 1\n", "\n", "$density\n", " [1] 0.0001 0.0000 0.0005 0.0020 0.0025 0.0019 0.0012 0.0011 0.0006 0.0001\n", "\n", "$mids\n", " [1] 450 550 650 750 850 950 1050 1150 1250 1350\n", "\n", "$xname\n", "[1] \"Nile\"\n", "\n", "$equidist\n", "[1] TRUE\n", "\n", "attr(,\"class\")\n", "[1] \"histogram\"\n" ] } ], "source": [ "print (hn)" ] }, { "cell_type": "code", "execution_count": 68, "id": "christian-airfare", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "List of 6\n", " $ breaks : int [1:11] 400 500 600 700 800 900 1000 1100 1200 1300 ...\n", " $ counts : int [1:10] 1 0 5 20 25 19 12 11 6 1\n", " $ density : num [1:10] 0.0001 0 0.0005 0.002 0.0025 0.0019 0.0012 0.0011 0.0006 0.0001\n", " $ mids : num [1:10] 450 550 650 750 850 950 1050 1150 1250 1350\n", " $ xname : chr \"Nile\"\n", " $ equidist: logi TRUE\n", " - attr(*, \"class\")= chr \"histogram\"\n" ] } ], "source": [ "# str : structure\n", "str(hn)" ] }, { "cell_type": "code", "execution_count": 69, "id": "protecting-superior", "metadata": {}, "outputs": [ { "data": { "text/html": [ "'list'" ], "text/latex": [ "'list'" ], "text/markdown": [ "'list'" ], "text/plain": [ "[1] \"list\"" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mode(hn)" ] }, { "cell_type": "code", "execution_count": 5, "id": "lesser-canyon", "metadata": {}, "outputs": [ { "data": { "text/plain": [ " Length Class Mode \n", "breaks 11 -none- numeric \n", "counts 10 -none- numeric \n", "density 10 -none- numeric \n", "mids 10 -none- numeric \n", "xname 1 -none- character\n", "equidist 1 -none- logical " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# summary is a generic function in R. It outputs a concise and more friendly representation of a list. \n", "summary(hn)" ] }, { "cell_type": "markdown", "id": "ceramic-traffic", "metadata": {}, "source": [ "Matrices\n", "\n", "Matrices, or more generally arrays, are multi-dimensional generalizations of \n", "vectors. In fact, they are vectors that can be indexed by two or more indices\n", "and will be printed in a special way.\n", "\n", "The matrix() function creates a matrix from the given set of values. We use \n", "the matrix(x, nrow=, ncol=) function to set the matrix cell values, the \n", "number of rows and the number of columns. We can use the colnames() and \n", "rownames() functions to set the column and row names of the matrix-like \n", "object." ] }, { "cell_type": "code", "execution_count": 29, "id": "solar-administration", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "
A matrix: 2 × 3 of type lgl
NANANA
NANANA
\n" ], "text/latex": [ "A matrix: 2 × 3 of type lgl\n", "\\begin{tabular}{lll}\n", "\t NA & NA & NA\\\\\n", "\t NA & NA & NA\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A matrix: 2 × 3 of type lgl\n", "\n", "| NA | NA | NA |\n", "| NA | NA | NA |\n", "\n" ], "text/plain": [ " [,1] [,2] [,3]\n", "[1,] NA NA NA \n", "[2,] NA NA NA " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "matrix(data = NA, nrow = 2, ncol = 3) " ] }, { "cell_type": "code", "execution_count": 11, "id": "caroline-things", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "
A matrix: 2 × 3 of type int
135
246
\n" ], "text/latex": [ "A matrix: 2 × 3 of type int\n", "\\begin{tabular}{lll}\n", "\t 1 & 3 & 5\\\\\n", "\t 2 & 4 & 6\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A matrix: 2 × 3 of type int\n", "\n", "| 1 | 3 | 5 |\n", "| 2 | 4 | 6 |\n", "\n" ], "text/plain": [ " [,1] [,2] [,3]\n", "[1,] 1 3 5 \n", "[2,] 2 4 6 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "example.matrix <- matrix(1:6,2,3)\n", "example.matrix" ] }, { "cell_type": "code", "execution_count": 12, "id": "durable-custody", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "
A matrix: 2 × 3 of type int
123
456
\n" ], "text/latex": [ "A matrix: 2 × 3 of type int\n", "\\begin{tabular}{lll}\n", "\t 1 & 2 & 3\\\\\n", "\t 4 & 5 & 6\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A matrix: 2 × 3 of type int\n", "\n", "| 1 | 2 | 3 |\n", "| 4 | 5 | 6 |\n", "\n" ], "text/plain": [ " [,1] [,2] [,3]\n", "[1,] 1 2 3 \n", "[2,] 4 5 6 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# data distributed by columns by default, can be changed using the keyword byrow \n", "example.matrix <- matrix(1:6,2,3, byrow=TRUE)\n", "example.matrix" ] }, { "cell_type": "code", "execution_count": 13, "id": "searching-limit", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
  1. 1
  2. 2
  3. 3
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 1\n", "\\item 2\n", "\\item 3\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 1\n", "2. 2\n", "3. 3\n", "\n", "\n" ], "text/plain": [ "[1] 1 2 3" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# retrieval by rows\n", "example.matrix[1,]" ] }, { "cell_type": "code", "execution_count": 14, "id": "rocky-consideration", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
  1. 2
  2. 5
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 2\n", "\\item 5\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 2\n", "2. 5\n", "\n", "\n" ], "text/plain": [ "[1] 2 5" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# retrival by columns\n", "example.matrix[,2]" ] }, { "cell_type": "code", "execution_count": 42, "id": "abandoned-measure", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "
A matrix: 2 × 3 of type dbl
1 23
5104
\n" ], "text/latex": [ "A matrix: 2 × 3 of type dbl\n", "\\begin{tabular}{lll}\n", "\t 1 & 2 & 3\\\\\n", "\t 5 & 10 & 4\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A matrix: 2 × 3 of type dbl\n", "\n", "| 1 | 2 | 3 |\n", "| 5 | 10 | 4 |\n", "\n" ], "text/plain": [ " [,1] [,2] [,3]\n", "[1,] 1 2 3 \n", "[2,] 5 10 4 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# changing values\n", "\n", "example.matrix[1,] <- 1:3\n", "example.matrix[2,] <- c(5,10,4)\n", "example.matrix" ] }, { "cell_type": "code", "execution_count": 45, "id": "pressing-fields", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
  1. 6
  2. 12
  3. 7
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 6\n", "\\item 12\n", "\\item 7\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 6\n", "2. 12\n", "3. 7\n", "\n", "\n" ], "text/plain": [ "[1] 6 12 7" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# apply () function is a machanism to apply a function across a vector. \n", "\n", "# by column\n", "apply(example.matrix,2,sum)" ] }, { "cell_type": "code", "execution_count": 46, "id": "passing-trinity", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
  1. 6
  2. 19
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 6\n", "\\item 19\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 6\n", "2. 19\n", "\n", "\n" ], "text/plain": [ "[1] 6 19" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# by row\n", "apply(example.matrix,1,sum)" ] }, { "cell_type": "code", "execution_count": 44, "id": "acoustic-consultancy", "metadata": {}, "outputs": [], "source": [ "matrix.head <- c(\"col a\",\"col b\",\"column c\")\n", "matrix.side <- c(\"first raw\",\"second raw\")" ] }, { "cell_type": "code", "execution_count": 45, "id": "qualified-senior", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\n", "
A matrix: 2 × 3 of type dbl
col acol bcolumn c
first raw1 23
second raw5104
\n" ], "text/latex": [ "A matrix: 2 × 3 of type dbl\n", "\\begin{tabular}{r|lll}\n", " & col a & col b & column c\\\\\n", "\\hline\n", "\tfirst raw & 1 & 2 & 3\\\\\n", "\tsecond raw & 5 & 10 & 4\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A matrix: 2 × 3 of type dbl\n", "\n", "| | col a | col b | column c |\n", "|---|---|---|---|\n", "| first raw | 1 | 2 | 3 |\n", "| second raw | 5 | 10 | 4 |\n", "\n" ], "text/plain": [ " col a col b column c\n", "first raw 1 2 3 \n", "second raw 5 10 4 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "colnames(example.matrix) = matrix.head\n", "rownames(example.matrix) = matrix.side\n", "example.matrix" ] }, { "cell_type": "code", "execution_count": 52, "id": "basic-routine", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " num [1:2, 1:3] 1 5 2 10 3 4\n", " - attr(*, \"dimnames\")=List of 2\n", " ..$ : chr [1:2] \"first raw\" \"second raw\"\n", " ..$ : chr [1:3] \"col a\" \"col b\" \"column c\"\n" ] } ], "source": [ "# The structure function str(object.name) informs you of the structure of a\n", "# specific object\n", "\n", "str(example.matrix)" ] }, { "cell_type": "code", "execution_count": 17, "id": "annoying-monitoring", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A matrix: 4 × 3 of type int
1 3 5
2 4 6
111315
121416
\n" ], "text/latex": [ "A matrix: 4 × 3 of type int\n", "\\begin{tabular}{lll}\n", "\t 1 & 3 & 5\\\\\n", "\t 2 & 4 & 6\\\\\n", "\t 11 & 13 & 15\\\\\n", "\t 12 & 14 & 16\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A matrix: 4 × 3 of type int\n", "\n", "| 1 | 3 | 5 |\n", "| 2 | 4 | 6 |\n", "| 11 | 13 | 15 |\n", "| 12 | 14 | 16 |\n", "\n" ], "text/plain": [ " [,1] [,2] [,3]\n", "[1,] 1 3 5 \n", "[2,] 2 4 6 \n", "[3,] 11 13 15 \n", "[4,] 12 14 16 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "
A matrix: 2 × 6 of type int
135111315
246121416
\n" ], "text/latex": [ "A matrix: 2 × 6 of type int\n", "\\begin{tabular}{llllll}\n", "\t 1 & 3 & 5 & 11 & 13 & 15\\\\\n", "\t 2 & 4 & 6 & 12 & 14 & 16\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A matrix: 2 × 6 of type int\n", "\n", "| 1 | 3 | 5 | 11 | 13 | 15 |\n", "| 2 | 4 | 6 | 12 | 14 | 16 |\n", "\n" ], "text/plain": [ " [,1] [,2] [,3] [,4] [,5] [,6]\n", "[1,] 1 3 5 11 13 15 \n", "[2,] 2 4 6 12 14 16 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# combine matrix using rbind (by row) and cbind (by column)\n", "\n", "matrix1 <- matrix(1:6,2,3)\n", "matrix2 <- matrix(11:16,2,3)\n", "rbind(matrix1,matrix2)\n", "cbind(matrix1,matrix2)" ] }, { "cell_type": "markdown", "id": "wound-expansion", "metadata": {}, "source": [ "### Exercise \n", "\n", "create a matrix with the following elements and then change the first column values to all 0.\n", "\n", "```\n", "1 1 1 \n", "2 2 2 \n", "3 3 3 \n", "```" ] }, { "cell_type": "markdown", "id": "lovely-effect", "metadata": {}, "source": [ "Arrays\n", "\n", "An array can be considered a multiple subscripted collection of data \n", "entries, for example numeric. R allows simple facilities for creating \n", "and handling arrays, and in particular the special case of matrices. \n", "\n", "As well as giving a vector structure a dim attribute, arrays can be \n", "constructed from vectors by the array function, which has the form \n", "array(data_vector, dim_vector)" ] }, { "cell_type": "code", "execution_count": 60, "id": "large-frederick", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 1\n", "\\item 2\n", "\\item 3\n", "\\item 4\n", "\\item 5\n", "\\item 6\n", "\\item 7\n", "\\item 8\n", "\\item 9\n", "\\item 10\n", "\\item 11\n", "\\item 12\n", "\\item 13\n", "\\item 14\n", "\\item 15\n", "\\item 16\n", "\\item 17\n", "\\item 18\n", "\\item 19\n", "\\item 20\n", "\\item 21\n", "\\item 22\n", "\\item 23\n", "\\item 24\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 1\n", "2. 2\n", "3. 3\n", "4. 4\n", "5. 5\n", "6. 6\n", "7. 7\n", "8. 8\n", "9. 9\n", "10. 10\n", "11. 11\n", "12. 12\n", "13. 13\n", "14. 14\n", "15. 15\n", "16. 16\n", "17. 17\n", "18. 18\n", "19. 19\n", "20. 20\n", "21. 21\n", "22. 22\n", "23. 23\n", "24. 24\n", "\n", "\n" ], "text/plain": [ ", , 1\n", "\n", " [,1] [,2] [,3] [,4]\n", "[1,] 1 4 7 10\n", "[2,] 2 5 8 11\n", "[3,] 3 6 9 12\n", "\n", ", , 2\n", "\n", " [,1] [,2] [,3] [,4]\n", "[1,] 13 16 19 22\n", "[2,] 14 17 20 23\n", "[3,] 15 18 21 24\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "Z <- array(1:24, c(3,4,2))\n", "Z" ] }, { "cell_type": "code", "execution_count": 56, "id": "lined-messaging", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " int [1:3, 1:4, 1:2] 1 2 3 4 5 6 7 8 9 10 ...\n" ] } ], "source": [ "str(Z)" ] }, { "cell_type": "markdown", "id": "brown-tsunami", "metadata": {}, "source": [ "## list and delete R objects \n", "\n", "The list function ls() outputs a list of existing R objects.\n", "\n", "rm() removes the object." ] }, { "cell_type": "code", "execution_count": 57, "id": "convertible-essex", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
  1. 'character.vector'
  2. 'example.matrix'
  3. 'hn'
  4. 'ind'
  5. 'is.not.a.number'
  6. 'is.not.available'
  7. 'matrix.head'
  8. 'matrix.side'
  9. 'numeric.vector'
  10. 'one2three'
  11. 'x'
  12. 'z'
  13. 'Z'
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 'character.vector'\n", "\\item 'example.matrix'\n", "\\item 'hn'\n", "\\item 'ind'\n", "\\item 'is.not.a.number'\n", "\\item 'is.not.available'\n", "\\item 'matrix.head'\n", "\\item 'matrix.side'\n", "\\item 'numeric.vector'\n", "\\item 'one2three'\n", "\\item 'x'\n", "\\item 'z'\n", "\\item 'Z'\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 'character.vector'\n", "2. 'example.matrix'\n", "3. 'hn'\n", "4. 'ind'\n", "5. 'is.not.a.number'\n", "6. 'is.not.available'\n", "7. 'matrix.head'\n", "8. 'matrix.side'\n", "9. 'numeric.vector'\n", "10. 'one2three'\n", "11. 'x'\n", "12. 'z'\n", "13. 'Z'\n", "\n", "\n" ], "text/plain": [ " [1] \"character.vector\" \"example.matrix\" \"hn\" \"ind\" \n", " [5] \"is.not.a.number\" \"is.not.available\" \"matrix.head\" \"matrix.side\" \n", " [9] \"numeric.vector\" \"one2three\" \"x\" \"z\" \n", "[13] \"Z\" " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ls()" ] }, { "cell_type": "code", "execution_count": 61, "id": "subjective-library", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
  1. 'character.vector'
  2. 'example.matrix'
  3. 'hn'
  4. 'ind'
  5. 'is.not.a.number'
  6. 'is.not.available'
  7. 'matrix.head'
  8. 'matrix.side'
  9. 'numeric.vector'
  10. 'one2three'
  11. 'x'
  12. 'z'
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 'character.vector'\n", "\\item 'example.matrix'\n", "\\item 'hn'\n", "\\item 'ind'\n", "\\item 'is.not.a.number'\n", "\\item 'is.not.available'\n", "\\item 'matrix.head'\n", "\\item 'matrix.side'\n", "\\item 'numeric.vector'\n", "\\item 'one2three'\n", "\\item 'x'\n", "\\item 'z'\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 'character.vector'\n", "2. 'example.matrix'\n", "3. 'hn'\n", "4. 'ind'\n", "5. 'is.not.a.number'\n", "6. 'is.not.available'\n", "7. 'matrix.head'\n", "8. 'matrix.side'\n", "9. 'numeric.vector'\n", "10. 'one2three'\n", "11. 'x'\n", "12. 'z'\n", "\n", "\n" ], "text/plain": [ " [1] \"character.vector\" \"example.matrix\" \"hn\" \"ind\" \n", " [5] \"is.not.a.number\" \"is.not.available\" \"matrix.head\" \"matrix.side\" \n", " [9] \"numeric.vector\" \"one2three\" \"x\" \"z\" " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "rm(Z)\n", "ls()" ] }, { "cell_type": "markdown", "id": "infectious-myanmar", "metadata": {}, "source": [ "## Data Frames\n", "\n", "Data frames are matrix-like structures, in which the columns can be \n", "of different types. Think of data frames as data matrices with one row per \n", "observational unit but with (possibly) both numerical and categorical \n", "variables. Many experiments are best described by data frames: the treatments\n", "are categorical but the response is numeric. \n", "\n", "As a result R dataframes are tightly coupled collections of variables which \n", "share many of the properties of matrices and of lists. Data frames are used \n", "as the fundamental data structure by most of R's modeling software.\n", "\n", "A data frame is a list with class \"data.frame\". There are restrictions on \n", "lists that may be made into data frames, namely :\n", "\n", "The components must be vectors (numeric, character, or logical), factors, \n", "numeric matrices, lists, or other data frames.\n", "Matrices, lists, and data frames provide as many variables to the new data \n", "frame as they have columns, elements, or variables, respectively.\n", "Numeric vectors, logicals and factors are included, and character vectors \n", "are coerced to be factors, whose levels are the unique values appearing in\n", "the vector.\n", "Vector structures appearing as variables of the data frame must all have the\n", "same length, and matrix structures must all have the same row size. " ] }, { "cell_type": "markdown", "id": "compliant-bride", "metadata": {}, "source": [ "### Dataframe construction " ] }, { "cell_type": "code", "execution_count": 62, "id": "loaded-feeding", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A data.frame: 4 × 3
vchn
<int><chr><dbl>
1a10
2b10
3c10
4d10
\n" ], "text/latex": [ "A data.frame: 4 × 3\n", "\\begin{tabular}{lll}\n", " v & ch & n\\\\\n", " & & \\\\\n", "\\hline\n", "\t 1 & a & 10\\\\\n", "\t 2 & b & 10\\\\\n", "\t 3 & c & 10\\\\\n", "\t 4 & d & 10\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.frame: 4 × 3\n", "\n", "| v <int> | ch <chr> | n <dbl> |\n", "|---|---|---|\n", "| 1 | a | 10 |\n", "| 2 | b | 10 |\n", "| 3 | c | 10 |\n", "| 4 | d | 10 |\n", "\n" ], "text/plain": [ " v ch n \n", "1 1 a 10\n", "2 2 b 10\n", "3 3 c 10\n", "4 4 d 10" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "my.data.frame = data.frame(v = 1:4, ch = c(\"a\", \"b\", \"c\", \"d\"), n = 10)\n", "my.data.frame" ] }, { "cell_type": "code", "execution_count": 18, "id": "bright-trainer", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A data.frame: 4 × 3
vectorcharacterconst.vector
<int><chr><dbl>
data11a10
data22b10
data33c10
data44d10
\n" ], "text/latex": [ "A data.frame: 4 × 3\n", "\\begin{tabular}{r|lll}\n", " & vector & character & const.vector\\\\\n", " & & & \\\\\n", "\\hline\n", "\tdata1 & 1 & a & 10\\\\\n", "\tdata2 & 2 & b & 10\\\\\n", "\tdata3 & 3 & c & 10\\\\\n", "\tdata4 & 4 & d & 10\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.frame: 4 × 3\n", "\n", "| | vector <int> | character <chr> | const.vector <dbl> |\n", "|---|---|---|---|\n", "| data1 | 1 | a | 10 |\n", "| data2 | 2 | b | 10 |\n", "| data3 | 3 | c | 10 |\n", "| data4 | 4 | d | 10 |\n", "\n" ], "text/plain": [ " vector character const.vector\n", "data1 1 a 10 \n", "data2 2 b 10 \n", "data3 3 c 10 \n", "data4 4 d 10 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Or:\n", "\n", "my.data.frame = data.frame(vector = 1:4,\n", " character = c(\"a\", \"b\", \"c\", \"d\"),\n", " const.vector = 10,\n", " row.names =c(\"data1\", \"data2\", \"data3\", \"data4\"))\n", "my.data.frame" ] }, { "cell_type": "markdown", "id": "finished-bridge", "metadata": {}, "source": [ "### Data selection and manipulation" ] }, { "cell_type": "code", "execution_count": 64, "id": "angry-intermediate", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
  1. 'a'
  2. 'b'
  3. 'c'
  4. 'd'
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 'a'\n", "\\item 'b'\n", "\\item 'c'\n", "\\item 'd'\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 'a'\n", "2. 'b'\n", "3. 'c'\n", "4. 'd'\n", "\n", "\n" ], "text/plain": [ "[1] \"a\" \"b\" \"c\" \"d\"" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
  1. 'a'
  2. 'b'
  3. 'c'
  4. 'd'
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 'a'\n", "\\item 'b'\n", "\\item 'c'\n", "\\item 'd'\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 'a'\n", "2. 'b'\n", "3. 'c'\n", "4. 'd'\n", "\n", "\n" ], "text/plain": [ "[1] \"a\" \"b\" \"c\" \"d\"" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# You can extract data from dataframes using the [ [ ] ] and $ sign:\n", "\n", "my.data.frame[[\"character\"]]\n", "\n", "my.data.frame[[2]]" ] }, { "cell_type": "code", "execution_count": 66, "id": "excess-patrol", "metadata": {}, "outputs": [ { "data": { "text/html": [ "'c'" ], "text/latex": [ "'c'" ], "text/markdown": [ "'c'" ], "text/plain": [ "[1] \"c\"" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Call the 3rd value of the character vector:\n", "\n", "my.data.frame[[2]][3]" ] }, { "cell_type": "code", "execution_count": 67, "id": "athletic-fitness", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
  1. 1
  2. 2
  3. 3
  4. 4
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 1\n", "\\item 2\n", "\\item 3\n", "\\item 4\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 1\n", "2. 2\n", "3. 3\n", "4. 4\n", "\n", "\n" ], "text/plain": [ "[1] 1 2 3 4" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
  1. 'b'
  2. 'c'
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 'b'\n", "\\item 'c'\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 'b'\n", "2. 'c'\n", "\n", "\n" ], "text/plain": [ "[1] \"b\" \"c\"" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Or using the $ syntax:\n", " \n", "my.data.frame$vector\n", " \n", "my.data.frame$character[2:3]" ] }, { "cell_type": "code", "execution_count": 68, "id": "secondary-multiple", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "NULL" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A data.frame: 4 × 4
vectorcharacterconst.vectornew
<int><chr><dbl><dbl>
data11a1010
data22b1011
data33c1020
data44d1040
\n" ], "text/latex": [ "A data.frame: 4 × 4\n", "\\begin{tabular}{r|llll}\n", " & vector & character & const.vector & new\\\\\n", " & & & & \\\\\n", "\\hline\n", "\tdata1 & 1 & a & 10 & 10\\\\\n", "\tdata2 & 2 & b & 10 & 11\\\\\n", "\tdata3 & 3 & c & 10 & 20\\\\\n", "\tdata4 & 4 & d & 10 & 40\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.frame: 4 × 4\n", "\n", "| | vector <int> | character <chr> | const.vector <dbl> | new <dbl> |\n", "|---|---|---|---|---|\n", "| data1 | 1 | a | 10 | 10 |\n", "| data2 | 2 | b | 10 | 11 |\n", "| data3 | 3 | c | 10 | 20 |\n", "| data4 | 4 | d | 10 | 40 |\n", "\n" ], "text/plain": [ " vector character const.vector new\n", "data1 1 a 10 10 \n", "data2 2 b 10 11 \n", "data3 3 c 10 20 \n", "data4 4 d 10 40 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# You can add single arguments to a data frame, query information, select and \n", "# manipulate arguments or single values from a dataframe \n", " \n", "my.data.frame$new\n", "\n", "my.data.frame$new = c(10,11,20,40)\n", "my.data.frame" ] }, { "cell_type": "code", "execution_count": 69, "id": "civil-language", "metadata": {}, "outputs": [ { "data": { "text/html": [ "4" ], "text/latex": [ "4" ], "text/markdown": [ "4" ], "text/plain": [ "[1] 4" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# length(object.name) returns the number of elements in an object such as \n", "# matrix vector or dataframes:\n", " \n", "length(my.data.frame$new) " ] }, { "cell_type": "code", "execution_count": 70, "id": "ongoing-world", "metadata": {}, "outputs": [ { "data": { "text/html": [ "4" ], "text/latex": [ "4" ], "text/markdown": [ "4" ], "text/plain": [ "[1] 4" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "3" ], "text/latex": [ "3" ], "text/markdown": [ "3" ], "text/plain": [ "[1] 3" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# which(object.name) and which.max(object.name) return the index of a specific\n", "# or of the greatest element of an object\n", " \n", "which.max(my.data.frame$new) \n", "\n", "which(my.data.frame$new == 20) " ] }, { "cell_type": "code", "execution_count": 71, "id": "acceptable-allen", "metadata": {}, "outputs": [ { "data": { "text/html": [ "40" ], "text/latex": [ "40" ], "text/markdown": [ "40" ], "text/plain": [ "[1] 40" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# max(object.name) returns the value of the greatest element\n", " \n", "max(my.data.frame$new) " ] }, { "cell_type": "code", "execution_count": 72, "id": "smart-temple", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
  1. 10
  2. 11
  3. 20
  4. 40
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 10\n", "\\item 11\n", "\\item 20\n", "\\item 40\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 10\n", "2. 11\n", "3. 20\n", "4. 40\n", "\n", "\n" ], "text/plain": [ "[1] 10 11 20 40" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# sort(object.name) sort from small to big \n", " \n", "sort(my.data.frame$new) " ] }, { "cell_type": "code", "execution_count": 73, "id": "chinese-president", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
  1. 40
  2. 20
  3. 11
  4. 10
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 40\n", "\\item 20\n", "\\item 11\n", "\\item 10\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 40\n", "2. 20\n", "3. 11\n", "4. 10\n", "\n", "\n" ], "text/plain": [ "[1] 40 20 11 10" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# rev(object.name) sorts from big to small\n", " \n", "rev(sort(my.data.frame$new)) " ] }, { "cell_type": "code", "execution_count": 74, "id": "separated-fifty", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\n", "
A data.frame: 1 × 4
vectorcharacterconst.vectornew
<int><chr><dbl><dbl>
data33c1020
\n" ], "text/latex": [ "A data.frame: 1 × 4\n", "\\begin{tabular}{r|llll}\n", " & vector & character & const.vector & new\\\\\n", " & & & & \\\\\n", "\\hline\n", "\tdata3 & 3 & c & 10 & 20\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.frame: 1 × 4\n", "\n", "| | vector <int> | character <chr> | const.vector <dbl> | new <dbl> |\n", "|---|---|---|---|---|\n", "| data3 | 3 | c | 10 | 20 |\n", "\n" ], "text/plain": [ " vector character const.vector new\n", "data3 3 c 10 20 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# subset(object.name, ...) returns a selection of an R-object with respect to \n", "# criteria (typically comparisons: x$V1 < 10). \n", " \n", "subset(my.data.frame, my.data.frame$new == 20)" ] }, { "cell_type": "code", "execution_count": 79, "id": "wireless-compact", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A data.frame: 4 × 3
characterconst.vectornew
<chr><dbl><dbl>
data1a1010
data2b1011
data3c1020
data4d1040
\n" ], "text/latex": [ "A data.frame: 4 × 3\n", "\\begin{tabular}{r|lll}\n", " & character & const.vector & new\\\\\n", " & & & \\\\\n", "\\hline\n", "\tdata1 & a & 10 & 10\\\\\n", "\tdata2 & b & 10 & 11\\\\\n", "\tdata3 & c & 10 & 20\\\\\n", "\tdata4 & d & 10 & 40\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.frame: 4 × 3\n", "\n", "| | character <chr> | const.vector <dbl> | new <dbl> |\n", "|---|---|---|---|\n", "| data1 | a | 10 | 10 |\n", "| data2 | b | 10 | 11 |\n", "| data3 | c | 10 | 20 |\n", "| data4 | d | 10 | 40 |\n", "\n" ], "text/plain": [ " character const.vector new\n", "data1 a 10 10 \n", "data2 b 10 11 \n", "data3 c 10 20 \n", "data4 d 10 40 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# If the R-object is a data frame,\n", "# the option select gives the variables to be kept or dropped using a minus \n", "# sign\n", "\n", "my.data.frame[-1]" ] }, { "cell_type": "markdown", "id": "emotional-target", "metadata": {}, "source": [ "## Reading and Writing Files\n", "\n", "read.table(\"filename\")** Reads a file in table format and creates a data \n", "frame from it, with cases corresponding to lines and variables to fields \n", "within the file. The default separator sep=\"\" is any whitespace. \n", "You might need sep=\",\" or \";\" and so on. \n", "Use header=TRUE to read the first line as a header of column names. \n", "The **as.is=TRUE** specification is used to prevent character vectors from\n", "being converted to factors. \n", "\n", "The comment.char=\"\" specification is used to prevent \"#\" from being \n", "interpreted as a comment and use \"skip=n\" to skip n lines before reading \n", "data. For more details:\n", "?read.table\n", "\n", "read.csv(\"filename\") is set to read comma separated files. Example usage is:\n", "read.csv(file.name, header = TRUE, sep = \",\", quote=\"\\\"\", dec=\".\", \n", "fill =TRUE, comment.char=\"\", ...)\n", "\n", "read.delim(\"filename\") is used for reading tab-delimited files\n", "\n", "read.fwf() reads a table of fixed width formatted data into a ’data.frame’.\n", "Widths is an integer vector, giving the widths of the fixed-width fields\n", "\n", "write.table(Robj, \"filename\", sep=\",\", row.names=FALSE, quote=FALSE)" ] }, { "cell_type": "code", "execution_count": 36, "id": "brave-popularity", "metadata": {}, "outputs": [], "source": [ "df <- read.csv(\"./geodata/shp/point_stat.csv\")" ] }, { "cell_type": "code", "execution_count": 5, "id": "complimentary-ground", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A data.frame: 6 × 4
FIDmeanstdevmin
<int><dbl><dbl><dbl>
102.5507250.258913422.396264
212.5507250.258913422.396264
322.5507250.258913422.396264
432.3837110.123817612.050272
542.3831370.096621222.133288
652.3831370.096621222.133288
\n" ], "text/latex": [ "A data.frame: 6 × 4\n", "\\begin{tabular}{r|llll}\n", " & FID & mean & stdev & min\\\\\n", " & & & & \\\\\n", "\\hline\n", "\t1 & 0 & 2.550725 & 0.25891342 & 2.396264\\\\\n", "\t2 & 1 & 2.550725 & 0.25891342 & 2.396264\\\\\n", "\t3 & 2 & 2.550725 & 0.25891342 & 2.396264\\\\\n", "\t4 & 3 & 2.383711 & 0.12381761 & 2.050272\\\\\n", "\t5 & 4 & 2.383137 & 0.09662122 & 2.133288\\\\\n", "\t6 & 5 & 2.383137 & 0.09662122 & 2.133288\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.frame: 6 × 4\n", "\n", "| | FID <int> | mean <dbl> | stdev <dbl> | min <dbl> |\n", "|---|---|---|---|---|\n", "| 1 | 0 | 2.550725 | 0.25891342 | 2.396264 |\n", "| 2 | 1 | 2.550725 | 0.25891342 | 2.396264 |\n", "| 3 | 2 | 2.550725 | 0.25891342 | 2.396264 |\n", "| 4 | 3 | 2.383711 | 0.12381761 | 2.050272 |\n", "| 5 | 4 | 2.383137 | 0.09662122 | 2.133288 |\n", "| 6 | 5 | 2.383137 | 0.09662122 | 2.133288 |\n", "\n" ], "text/plain": [ " FID mean stdev min \n", "1 0 2.550725 0.25891342 2.396264\n", "2 1 2.550725 0.25891342 2.396264\n", "3 2 2.550725 0.25891342 2.396264\n", "4 3 2.383711 0.12381761 2.050272\n", "5 4 2.383137 0.09662122 2.133288\n", "6 5 2.383137 0.09662122 2.133288" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "head(df)" ] }, { "cell_type": "code", "execution_count": 33, "id": "alike-tender", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\n", "
A data.frame: 2 × 4
FIDmeanstdevmin
<int><dbl><dbl><dbl>
1061057.5365150.18950117.16515
1071067.5365150.18950117.16515
\n" ], "text/latex": [ "A data.frame: 2 × 4\n", "\\begin{tabular}{r|llll}\n", " & FID & mean & stdev & min\\\\\n", " & & & & \\\\\n", "\\hline\n", "\t106 & 105 & 7.536515 & 0.1895011 & 7.16515\\\\\n", "\t107 & 106 & 7.536515 & 0.1895011 & 7.16515\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.frame: 2 × 4\n", "\n", "| | FID <int> | mean <dbl> | stdev <dbl> | min <dbl> |\n", "|---|---|---|---|---|\n", "| 106 | 105 | 7.536515 | 0.1895011 | 7.16515 |\n", "| 107 | 106 | 7.536515 | 0.1895011 | 7.16515 |\n", "\n" ], "text/plain": [ " FID mean stdev min \n", "106 105 7.536515 0.1895011 7.16515\n", "107 106 7.536515 0.1895011 7.16515" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# subsetting \n", "dfSel <- df[which(df$mean>7),]\n", "dfSel" ] }, { "cell_type": "code", "execution_count": 34, "id": "informal-frontier", "metadata": {}, "outputs": [], "source": [ "write.csv(dfSel,\"./geodata/shp/point_stat_sel.csv\", row.names=FALSE)" ] }, { "cell_type": "code", "execution_count": 39, "id": "israeli-first", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\n", "
A data.frame: 2 × 4
FIDmeanstdevmin
<int><dbl><dbl><dbl>
1057.5365150.18950117.16515
1067.5365150.18950117.16515
\n" ], "text/latex": [ "A data.frame: 2 × 4\n", "\\begin{tabular}{llll}\n", " FID & mean & stdev & min\\\\\n", " & & & \\\\\n", "\\hline\n", "\t 105 & 7.536515 & 0.1895011 & 7.16515\\\\\n", "\t 106 & 7.536515 & 0.1895011 & 7.16515\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.frame: 2 × 4\n", "\n", "| FID <int> | mean <dbl> | stdev <dbl> | min <dbl> |\n", "|---|---|---|---|\n", "| 105 | 7.536515 | 0.1895011 | 7.16515 |\n", "| 106 | 7.536515 | 0.1895011 | 7.16515 |\n", "\n" ], "text/plain": [ " FID mean stdev min \n", "1 105 7.536515 0.1895011 7.16515\n", "2 106 7.536515 0.1895011 7.16515" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df <- read.csv(\"./geodata/shp/point_stat_sel.csv\")\n", "df" ] }, { "cell_type": "markdown", "id": "concrete-filing", "metadata": {}, "source": [ "### Exercise \n", "\n", "Print the data rows with the column min value less than 1. Do NOT use the \"which\" function in R. " ] }, { "cell_type": "markdown", "id": "phantom-courtesy", "metadata": {}, "source": [ "## Functions\n", "\n", "Functions are themselves objects in R which can be stored in the project's \n", "workspace. This provides a simple and convenient way to extend R. \n", "\n", "Usage: in writing your own function you provide one or more arguments or \n", "names for the function, an expression and a value \n", "is produced equal to the output function result.\n", "\n", "function(arglist) expr function definition \n", "return(value) " ] }, { "cell_type": "code", "execution_count": 112, "id": "jewish-light", "metadata": {}, "outputs": [ { "data": { "text/html": [ "243" ], "text/latex": [ "243" ], "text/markdown": [ "243" ], "text/plain": [ "[1] 243" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Example\n", "\n", "myfunction <- function(x) x^5\n", "myfunction(3)" ] }, { "cell_type": "code", "execution_count": 115, "id": "recent-romance", "metadata": {}, "outputs": [], "source": [ "# oddcount function \n", "\n", "oddcount <- function(x){\n", " k <- 0 \n", " for (i in x) {\n", " if (i %% 2 == 1) k <- k + 1\n", " }\n", " return (k)\n", "}" ] }, { "cell_type": "code", "execution_count": 116, "id": "brown-syndicate", "metadata": {}, "outputs": [ { "data": { "text/html": [ "4" ], "text/latex": [ "4" ], "text/markdown": [ "4" ], "text/plain": [ "[1] 4" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "oddcount(c(1,3,5,7))" ] }, { "cell_type": "code", "execution_count": 117, "id": "incorrect-carroll", "metadata": {}, "outputs": [ { "data": { "text/html": [ "3" ], "text/latex": [ "3" ], "text/markdown": [ "3" ], "text/plain": [ "[1] 3" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "oddcount(c(1,3,5,8))" ] }, { "cell_type": "markdown", "id": "thick-theta", "metadata": {}, "source": [ "### break and next \n", " break : break out of a loop \n", " next : skip a step " ] }, { "cell_type": "code", "execution_count": 48, "id": "reduced-dispatch", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1] 2\n", "[1] 4\n", "[1] 6\n", "[1] 8\n" ] } ], "source": [ "for (i in 1:10){\n", " if (i %in% c(1,3,5,7)) {\n", " next\n", " }\n", " else if (i > 8){\n", " break\n", " } \n", " print (i)\n", "}" ] }, { "cell_type": "markdown", "id": "answering-draft", "metadata": {}, "source": [ "### Exercise \n", "\n", "write a function to test if a number is a prime number, a natural number that is NOT a multiplication of two smaller numbers. " ] }, { "cell_type": "markdown", "id": "moved-appearance", "metadata": {}, "source": [ "## Basic Graphs\n", "\n", "The plot() function forms the foundation for much of R based graphing operations. " ] }, { "cell_type": "code", "execution_count": 11, "id": "approved-occasion", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAC5VBMVEUAAAABAQECAgIDAwME\nBAQFBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQVFRUW\nFhYXFxcYGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJyco\nKCgpKSkqKiorKyssLCwuLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc5OTk6Ojo7Ozs8\nPDw9PT0+Pj4/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tMTExNTU1O\nTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVXV1dYWFhZWVlaWlpbW1tcXFxdXV1eXl5fX19gYGBh\nYWFiYmJjY2NkZGRmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29wcHBxcXFycnJzc3N0\ndHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+BgYGCgoKDg4OEhISFhYWGhoaH\nh4eIiIiKioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OUlJSVlZWWlpaXl5eYmJiZmZmb\nm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWmpqanp6eoqKipqamrq6usrKytra2u\nrq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4uLi5ubm6urq7u7u8vLy9vb2+vr6/v7/A\nwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnKysrLy8vMzMzNzc3Ozs7Pz8/Q0NDR0dHS\n0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g4ODh4eHj4+Pk5OTl\n5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb3\n9/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7///+xafNgAAAACXBIWXMAABJ0AAASdAHeZh94AAAb\n/klEQVR4nO3daXxU5aHH8ScZskFSCFwWtZAg1apsilbLohUVQRQFCigoBW2vC15FiIqA9hbU\nKoil1d5bQOwtirQF2l60RG0LIgQQZC2b0kuUVRYpScic13eWJJowHJKc/zwzp/P7vjjncc7J\n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\nRK5CYII=", "text/plain": [ "plot without title" ] }, "metadata": { "image/png": { "height": 420, "width": 420 } }, "output_type": "display_data" } ], "source": [ "plot(c(1,3,5,7),c(2,4,6,8))" ] }, { "cell_type": "code", "execution_count": 17, "id": "diverse-stuff", "metadata": {}, "outputs": [], "source": [ "x <- seq(0,10,length.out=100)\n", "y <- exp(-x)" ] }, { "cell_type": "code", "execution_count": 18, "id": "neutral-hanging", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAADAFBMVEUAAAABAQECAgIDAwME\nBAQFBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQVFRUW\nFhYXFxcYGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJyco\nKCgpKSkqKiorKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6\nOjo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tM\nTExNTU1OTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1e\nXl5fX19gYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29w\ncHBxcXFycnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGC\ngoKDg4OEhISFhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OU\nlJSVlZWWlpaXl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWm\npqanp6eoqKipqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4\nuLi5ubm6urq7u7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnK\nysrLy8vMzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc\n3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u\n7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7////i\nsF19AAAACXBIWXMAABJ0AAASdAHeZh94AAAgAElEQVR4nO3dd0AT9//H8U8SEgKCCIiggODe\nE0fdA/eqde+9tU5cdVsnWmvrHq2zVavVulettWrVqnXVvarWvXCy8/l9LsH6/bU2ILxzl0te\njz+4i5z3+Yh5kktySRgHgDRjSk8AwBEgJAACCAmAAEICIICQAAggJAACCAmAAEICIICQAAgg\nJAACCAmAAEICIICQAAggJAACCAmAAEICIICQAAggJAACCAmAAEICIICQAAggJAACCAmAAEIC\nIICQAAggJAACCAmAAEICIICQAAggJAACCAmAAEICIICQAAggJAACCAmAAEICIICQAAggJAAC\nCAmAAEICIICQAAggJAACCAmAAEICIICQAAggJAACCAmAAEICIICQAAggJAACCAmAAEICIICQ\nAAggJAACCAmAAEICIICQAAggJAACCAmAAEICIICQAAggJAACCAmAAEICIICQAAggJAACCAmA\nAEICIICQAAggJAACCAmAAEICIICQAAggJAACCAmAAEICIICQAAggJAACCAmAAEICIICQAAgg\nJAACCAmAAEICIICQAAggJAACCAmAAEICIICQAAggJAACCAmAAEICIICQAAggJAACCAmAAEIC\nICBDSCePAajKyfe/lts+pKMMQGWOvvfV3PYhHWSxNh8DgFAsO/jefwchAfwDQgIggJAACCAk\nAAIICYAAQgIggJAACMgdkunq7vXr99xIZiuEBCojb0gPB/hbngUOGffS2nYICVRG1pDuhLIc\n7UdHRo5slYUVibKyIUIClZE1pE76VUlrCbM1/axsiJBAZWQNKaDj2/XmwVY2REigMrKGZJj4\ndn2swcqGCAlURtaQQpq8Xa8XamVDhAQqI2tIAzTTYixrL0awYVY2REigMrKGFFWceVbp0Kd3\nuwpurNIrKxsiJFAZeZ9Hip4RppWeRnIpuzDe2nb/FdKpoXXqDD2V6uEBbEX2U4RiLh47fjku\nmY3+I6TJuoqDB1fUTU7L+AC2oKZz7dYa1kuL9YZ1Np8AwPtRU0jFIizLiOI2nwDA+1EqpCvh\n4f/4k8S9u/82810hvWCHLCu/aqyeqAcgP6VCOsH+uZdrft5/c2fvSOUOu2hZucDuEMwAgJBS\nIUWfOWPlu/PZi3//YZxxq2VlizG5BysAZGaf95HeGRJvXMMkLRKrN7b5BADej2IhPbps5Zvv\nDumCV6u7nN9t5XWRYgIAhBQLaai1vbw7JH68IAsNZQWPU4wPQElVIfHE40uXHkukGB6AlLpC\nArBTsoYU9j8CEBI4EFlD0mpd/6ZDSOBAZA1pqOfbh+pwaAeORNaQ4oqV+PupVIQEjkTeBxvO\n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\n+sCMHVgjAAAAAElFTkSuQmCC", "text/plain": [ "plot without title" ] }, "metadata": { "image/png": { "height": 420, "width": 420 } }, "output_type": "display_data" } ], "source": [ "plot(x,y)" ] }, { "cell_type": "code", "execution_count": 20, "id": "desperate-preliminary", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAADAFBMVEUAAAABAQECAgIDAwME\nBAQFBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQVFRUW\nFhYXFxcYGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJyco\nKCgpKSkqKiorKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6\nOjo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tM\nTExNTU1OTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1e\nXl5fX19gYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29w\ncHBxcXFycnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGC\ngoKDg4OEhISFhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OU\nlJSVlZWWlpaXl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWm\npqanp6eoqKipqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4\nuLi5ubm6urq7u7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnK\nysrLy8vMzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc\n3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u\n7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7////i\nsF19AAAACXBIWXMAABJ0AAASdAHeZh94AAAgAElEQVR4nO3de4BVVb3A8d/MMIMDjoovEMUZ\nxVdpopDXF0iEptywJ6SSAqLhA3ygJt7AByZKmEhqCpZXU8vCRNPSlPBRaqYgCIpyAQktU3kI\n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\nAAAAAElFTkSuQmCC", "text/plain": [ "plot without title" ] }, "metadata": { "image/png": { "height": 420, "width": 420 } }, "output_type": "display_data" } ], "source": [ "plot(x,y,type=\"l\",lwd=3)" ] }, { "cell_type": "code", "execution_count": 23, "id": "optional-compact", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAADAFBMVEUAAAABAQECAgIDAwME\nBAQFBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQVFRUW\nFhYXFxcYGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJyco\nKCgpKSkqKiorKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6\nOjo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tM\nTExNTU1OTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1e\nXl5fX19gYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29w\ncHBxcXFycnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGC\ngoKDg4OEhISFhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OU\nlJSVlZWWlpaXl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWm\npqanp6eoqKipqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4\nuLi5ubm6urq7u7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnK\nysrLy8vMzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc\n3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u\n7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7////i\nsF19AAAACXBIWXMAABJ0AAASdAHeZh94AAAgAElEQVR4nO2dB5wU5fnHn+twoFRBQAmCvQEq\nCoYiigp/EAUFRYw1AUUFsQRDVCJoBDWIkijEhgoiiCDYQUSUpuCBLjU0AYFD4ZB21Lv5v7Pl\n+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\nH/lq8w0TiRd2v93VYiNAUpGkIhWcRJS2XWwGSCaSVCTrYbZJGiU4AyQRySrSUiZSC8EZIIlI\nVpGsc+O+MDMAxSStSE8zkYaIDgFJQ9KKtCmFqAmuOQY4YZhIHNvoW7NN0iKvD9K3jR/5avMN\nE4ljG/0rTKT7vT5I3zZ+5KvNN0wkjr1Wu7KITjjq8UH69nohX21+8opkdWWbpE89PkbfFxL5\navOTWKRJTKTeHh+j7wuJfLX5SSzSwWpEVTx+ddX3hUS+2nzDROLaRn+79xZwfdv4ka823zCR\nuLbRz2IitfX2EH3b+JGvNt8wkbhS0IiZtFJCEEh8klkkaygT6WEZQSDhSWqRfkkjqn1IRhJI\ndJJaJKsL2yRNlpIEEpzkFmk6E+kqKUkgwUlukY42IEpR2rwFEoTkFsn6O9skPSYnCiQ0honE\nu41+QypRPQ+dq/q28SNfbb5hInFvo7+SbZJmuJ+ubxs/8tXmGyYS914ru3P1GvfT9e31Qr7a\n/GQX6XAdorTNrqfr+0IiX21+sotkPcQ2ScNcz9b3hUS+2vykF2l1ClHDY25n6/tCIl9tvmEi\nCWijb8M2SV+4naxvGz/y1eYbJpKANvp3mEjXu52sbxs/8tXmGyaSAPJrEKW7390AQEVAJGsg\n2yQNkhcHEhKIZG1MI6qxX14eSEQgkmVdxzZJr0jMAwkIRLKsOUyk03EacBAPEInRjJn0ucxA\nkHBAJMabTKROMgNBwmGYSGLa6A+dSJTi6nRC+rbxI19tvmEiCWqjH8I2Sfe4mahvGz/y1eYb\nJpKgXqsdlYiyd7qYqG+vF/LV5kOkILeyTdIIF/P0fSGRrzYfIgXJYSI1OBJ7nr4vJPLV5kOk\nEG3dneFO3xcS+WrzDRNJWBv9B0ykP8aepm8bP/LV5hsmkrA2+mP2CfW/izlN3zZ+5KvNN0wk\ncTzPRLpOdihIGCBSmD3ViVJ+kp0KEgWIFOFxtknqJT0VJAgQKcKu44jSlO4SAgYDkYp4mG2S\n7pQfCxICVSLlBwIOS5WIlFuZKGOj/FyQCEgTacPAludcO7lo3+FCcnoWJSJZ97JN0r0KckEC\nIEukTyqRzaVbwmOfIglto9+cSZTl/Hufvm38yFebL0mkbdWIUuqxN2q9VaE7fIokto3+zpgX\nZ9a3jR/5avMlifQ4e4futQ69VoNODv0n36dIYnut1qUTVfnVaYa+vV7IV5svSaRLwl0D6xtR\n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\nU7D2/SE9viopUtF+8nO79Hv67Tn/E3Bhs7Ik8d8/Rr4kkfLqUGqPKVuDvzEWbprYmaix0xlA\nIFL0/Jyne7eoXk6mICec1+n2v4+eOn+9sLOraLD+mubL6myYF3ztsxqc2qR+sFPo5JVOsyFS\njPwd37z2aI8Lo/jEqHLqH6+7+7FRE2Yu28xVKl3WX798ab12G3sXf2Wm7AHOx98kyWEUcefv\n/P69Z+/tcu5xUYWyqXzS+e1v6DNo+NjJs5as/TW+X3c1W3+N8iV2f+9+95GurZs1b9Nt8LRY\nRwskzWEUnPJ3Lfvo5b/f2v6MKo5Ghb2qd2aLDtfffv/g4a+8/cGs735av9PDNkvT9dcg37Dj\nkYAz+1Z9PX7kw7d2PL9eWmyliql2YuOmLTp06XFXn0GDh48cO27yh7PmLlm2fkNenoJd7GYC\nkRKUwh0r5n7w8tD+N199USPnj36xtmA1ajRufPaFF17WoUOPHjf16XPPoEF/Gz58+H/Gjn1j\n8uTJn8yaNWv+kiVLflrP2JWXl+fpXC4JhKYi1d+Zn1/8+33hwXwM4xkezl214JPxo4c+1Pfe\n22/oeG7liCSZp5999tn1iP+wRt2LWrZsfUljm2YXXnhhy+tuuP32Hh0YHXswet3Xv/+jD/WJ\nMHj4iBEjhg4Kwhx99j+vvPLKi8ODjBk79tV3xo8fP25shFcnzpgxY9rkCO9PLzX8eM7XX3/9\n1awIX7oazlsS4gebJUVUOPwlyt95bz0lIm3p27evw+IxQwKMyEnfjq4JYMh1eDRv/dJvPpv8\n1uLg8IXWFzY5qUYGnfBFcNg/LAOGFQ1Tx0T5wz6hRKSlrLQyd22sW6OI7KBIy8NLdgZrxlDw\nsHBzaPjTpLFjhw9/dNDLoWHORWc0blijRlbv0PCHlNAbK2mH50T5S2oj0rEZRdvnyUODIkW6\nmvaHisZQh+EK9iGHfSr68OPQ8Nvhwx9jH8gGPPlTcPjFNfbHtzYX3hwaTm3cuL79H8b2oeHE\n8H/dLzJ5eGuUP44akfax18Jh8fwOW3NzdxyNDPfm5mKYEMOjeUG2/byasc7eQbF+2ZIlOcsY\nS39Ysij01WXuIsaC2bOmhP6r+snX9jeZqfbN19l3pEmfMz55I/KVKTR8dXiY1z9kTHnBaThp\nyKAwL05ijPc2HJVf8QpuvULHnQ3zKcrvhvq20SM/ufP13GsXVSR92+iRn9z5homkb68V8pM7\n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\ngpvYoluQAAAAAElFTkSuQmCC", "text/plain": [ "plot without title" ] }, "metadata": { "image/png": { "height": 420, "width": 420 } }, "output_type": "display_data" } ], "source": [ "plot(x,y,type=\"l\",lwd=3, xlab=\"time\", cex.lab=1.5,cex.axis=1.5)\n", "grid(lwd=3)" ] }, { "cell_type": "markdown", "id": "herbal-drawing", "metadata": {}, "source": [ "## Assignment \n", "\n", "- individual effort or collaboration by maximum two people \n", "- if in collaboration, please specify the contribution of each contributor \n", "- please turn in a set of .pdf and .ipynb files\n", "- please label the question number before giving the answer\n", "\n", "Q1. Read in file \"./geodata/shp/point_stat.csv\" and output the rows that their values in the \"stdev\" column are less than those in their \"min\" column and their \"mean\" values are all greater than 7. (20%)\n", "\n", "\n", "Q2. Create a 3x3 matrix with element values in the range of 1 to 9 and then change the diagonal elements to 0. (20%)\n", "\n", "```\n", "1\t4\t7 0\t4\t7\n", "2\t5\t8 ==> 2\t0\t8\n", "3\t6\t9 3\t6\t0\n", "```\n", "\n", "\n", "Q3. Create a dataframe to store the calendar of March 2021 with the day of the week as the column name. (20%) \n", "\n", "```\n", "Mo Tu We Th Fr Sa Su \n", " 1 2 3 4 5 6 7 \n", " 8 9 10 11 12 13 14 \n", "15 16 17 18 19 20 21 \n", "22 23 24 25 26 27 28 \n", "29 30 31\n", "```\n", "QB (bonus) (10%)\n", "\n", "According to Gregorian calendar, leap years can be determined by the criteria below. \n", "```\n", "Years that are divisible by 4 and not divisible by 100 are leap years. \n", "Years that are divisible by 100 but not divisible by 400 are NOT leap years. \n", "Years that are divisible by 400 are leap years. \n", "```\n", "Please write a R script to print all the leap years between 1800 and 2020 into a file named \"leap_years.dat\" and calculate the ratio of the number of leap years over this period of time." ] } ], "metadata": { "kernelspec": { "display_name": "R", "language": "R", "name": "ir" }, "language_info": { "codemirror_mode": "r", "file_extension": ".r", "mimetype": "text/x-r-source", "name": "R", "pygments_lexer": "r", "version": "3.6.3" } }, "nbformat": 4, "nbformat_minor": 5 }