Getting ready:

Select columns

Examples using select:

select(litters_data, group, litter_number)
## # A tibble: 49 x 2
##    group   litter_number
##    <chr>           <chr>
##  1  Con7             #85
##  2  Con7       #1/2/95/2
##  3  Con7   #5/5/3/83/3-3
##  4  Con7     #5/4/2/95/2
##  5  Con7     #4/2/95/3-3
##  6  Con7     #2/2/95/3-2
##  7  Con7 #1/5/3/83/3-3/2
##  8  Con8       #3/83/3-3
##  9  Con8         #2/95/3
## 10  Con8     #3/5/2/2/95
## # ... with 39 more rows
select(litters_data, group, litter_number, pups_survive, gd0_weight)
## # A tibble: 49 x 4
##    group   litter_number pups_survive gd0_weight
##    <chr>           <chr>        <int>      <dbl>
##  1  Con7             #85            3       19.7
##  2  Con7       #1/2/95/2            7       27.0
##  3  Con7   #5/5/3/83/3-3            5       26.0
##  4  Con7     #5/4/2/95/2            4       28.5
##  5  Con7     #4/2/95/3-3            6         NA
##  6  Con7     #2/2/95/3-2            4         NA
##  7  Con7 #1/5/3/83/3-3/2            9         NA
##  8  Con8       #3/83/3-3            8         NA
##  9  Con8         #2/95/3            8         NA
## 10  Con8     #3/5/2/2/95            8       28.5
## # ... with 39 more rows
select(litters_data, -gd18_weight)
## # A tibble: 49 x 7
##    group   litter_number gd0_weight gd_of_birth pups_born_alive
##    <chr>           <chr>      <dbl>       <int>           <int>
##  1  Con7             #85       19.7          20               3
##  2  Con7       #1/2/95/2       27.0          19               8
##  3  Con7   #5/5/3/83/3-3       26.0          19               6
##  4  Con7     #5/4/2/95/2       28.5          19               5
##  5  Con7     #4/2/95/3-3         NA          20               6
##  6  Con7     #2/2/95/3-2         NA          20               6
##  7  Con7 #1/5/3/83/3-3/2         NA          20               9
##  8  Con8       #3/83/3-3         NA          20               9
##  9  Con8         #2/95/3         NA          20               8
## 10  Con8     #3/5/2/2/95       28.5          20               8
## # ... with 39 more rows, and 2 more variables: pups_dead_birth <int>,
## #   pups_survive <int>
select(litters_data, group:gd_of_birth)
## # A tibble: 49 x 5
##    group   litter_number gd0_weight gd18_weight gd_of_birth
##    <chr>           <chr>      <dbl>       <dbl>       <int>
##  1  Con7             #85       19.7        34.7          20
##  2  Con7       #1/2/95/2       27.0        42.0          19
##  3  Con7   #5/5/3/83/3-3       26.0        41.4          19
##  4  Con7     #5/4/2/95/2       28.5        44.1          19
##  5  Con7     #4/2/95/3-3         NA          NA          20
##  6  Con7     #2/2/95/3-2         NA          NA          20
##  7  Con7 #1/5/3/83/3-3/2         NA          NA          20
##  8  Con8       #3/83/3-3         NA          NA          20
##  9  Con8         #2/95/3         NA          NA          20
## 10  Con8     #3/5/2/2/95       28.5          NA          20
## # ... with 39 more rows
select(litters_data, litter = litter_number, everything())
## # A tibble: 49 x 8
##             litter group gd0_weight gd18_weight gd_of_birth
##              <chr> <chr>      <dbl>       <dbl>       <int>
##  1             #85  Con7       19.7        34.7          20
##  2       #1/2/95/2  Con7       27.0        42.0          19
##  3   #5/5/3/83/3-3  Con7       26.0        41.4          19
##  4     #5/4/2/95/2  Con7       28.5        44.1          19
##  5     #4/2/95/3-3  Con7         NA          NA          20
##  6     #2/2/95/3-2  Con7         NA          NA          20
##  7 #1/5/3/83/3-3/2  Con7         NA          NA          20
##  8       #3/83/3-3  Con8         NA          NA          20
##  9         #2/95/3  Con8         NA          NA          20
## 10     #3/5/2/2/95  Con8       28.5          NA          20
## # ... with 39 more rows, and 3 more variables: pups_born_alive <int>,
## #   pups_dead_birth <int>, pups_survive <int>
rename(litters_data, litter = litter_number)
## # A tibble: 49 x 8
##    group          litter gd0_weight gd18_weight gd_of_birth
##    <chr>           <chr>      <dbl>       <dbl>       <int>
##  1  Con7             #85       19.7        34.7          20
##  2  Con7       #1/2/95/2       27.0        42.0          19
##  3  Con7   #5/5/3/83/3-3       26.0        41.4          19
##  4  Con7     #5/4/2/95/2       28.5        44.1          19
##  5  Con7     #4/2/95/3-3         NA          NA          20
##  6  Con7     #2/2/95/3-2         NA          NA          20
##  7  Con7 #1/5/3/83/3-3/2         NA          NA          20
##  8  Con8       #3/83/3-3         NA          NA          20
##  9  Con8         #2/95/3         NA          NA          20
## 10  Con8     #3/5/2/2/95       28.5          NA          20
## # ... with 39 more rows, and 3 more variables: pups_born_alive <int>,
## #   pups_dead_birth <int>, pups_survive <int>
select(litters_data, group)
## # A tibble: 49 x 1
##    group
##    <chr>
##  1  Con7
##  2  Con7
##  3  Con7
##  4  Con7
##  5  Con7
##  6  Con7
##  7  Con7
##  8  Con8
##  9  Con8
## 10  Con8
## # ... with 39 more rows
pull(litters_data, group)
##  [1] "Con7" "Con7" "Con7" "Con7" "Con7" "Con7" "Con7" "Con8" "Con8" "Con8"
## [11] "Con8" "Con8" "Con8" "Con8" "Con8" "Mod7" "Mod7" "Mod7" "Mod7" "Mod7"
## [21] "Mod7" "Mod7" "Mod7" "Mod7" "Mod7" "Mod7" "Mod7" "Low7" "Low7" "Low7"
## [31] "Low7" "Low7" "Low7" "Low7" "Low7" "Mod8" "Mod8" "Mod8" "Mod8" "Mod8"
## [41] "Mod8" "Mod8" "Low8" "Low8" "Low8" "Low8" "Low8" "Low8" "Low8"
select(litters_data, starts_with("gd"))
## # A tibble: 49 x 3
##    gd0_weight gd18_weight gd_of_birth
##         <dbl>       <dbl>       <int>
##  1       19.7        34.7          20
##  2       27.0        42.0          19
##  3       26.0        41.4          19
##  4       28.5        44.1          19
##  5         NA          NA          20
##  6         NA          NA          20
##  7         NA          NA          20
##  8         NA          NA          20
##  9         NA          NA          20
## 10       28.5          NA          20
## # ... with 39 more rows

Examples with select using pup data (from Lynette):

select(pups_data, litter_number, sex, pd_ears)
## # A tibble: 313 x 3
##    litter_number   sex pd_ears
##            <chr> <int>   <int>
##  1           #85     1       4
##  2           #85     1       4
##  3     #1/2/95/2     1       5
##  4     #1/2/95/2     1       5
##  5 #5/5/3/83/3-3     1       5
##  6 #5/5/3/83/3-3     1       5
##  7   #5/4/2/95/2     1      NA
##  8   #4/2/95/3-3     1       4
##  9   #4/2/95/3-3     1       4
## 10   #2/2/95/3-2     1       4
## # ... with 303 more rows

Filter rows

Examples using filter:

filter(litters_data, pups_born_alive >= 8)
## # A tibble: 28 x 8
##    group   litter_number gd0_weight gd18_weight gd_of_birth
##    <chr>           <chr>      <dbl>       <dbl>       <int>
##  1  Con7       #1/2/95/2       27.0        42.0          19
##  2  Con7 #1/5/3/83/3-3/2         NA          NA          20
##  3  Con8       #3/83/3-3         NA          NA          20
##  4  Con8         #2/95/3         NA          NA          20
##  5  Con8     #3/5/2/2/95       28.5          NA          20
##  6  Con8     #5/4/3/83/3       28.0          NA          19
##  7  Con8 #3/5/3/83/3-3-2         NA          NA          20
##  8  Mod7             #59       17.0        33.4          19
##  9  Mod7            #103       21.4        42.1          19
## 10  Mod7       #3/83/3-2         NA          NA          19
## # ... with 18 more rows, and 3 more variables: pups_born_alive <int>,
## #   pups_dead_birth <int>, pups_survive <int>
filter(litters_data, pups_born_alive == 8)
## # A tibble: 16 x 8
##    group   litter_number gd0_weight gd18_weight gd_of_birth
##    <chr>           <chr>      <dbl>       <dbl>       <int>
##  1  Con7       #1/2/95/2       27.0        42.0          19
##  2  Con8         #2/95/3         NA          NA          20
##  3  Con8     #3/5/2/2/95       28.5          NA          20
##  4  Con8 #3/5/3/83/3-3-2         NA          NA          20
##  5  Mod7             #59       17.0        33.4          19
##  6  Mod7       #3/83/3-2         NA          NA          19
##  7  Low7           #84/2       24.3        40.8          20
##  8  Low7           #85/2       22.2        38.5          20
##  9  Mod8             #97       24.5        42.8          20
## 10  Mod8         #5/93/2         NA          NA          19
## 11  Mod8      #7/110/3-2       27.5        46.0          19
## 12  Mod8           #82/4       33.4        52.7          20
## 13  Low8             #53       21.8        37.2          20
## 14  Low8             #79       25.4        43.8          19
## 15  Low8            #100       20.0        39.2          20
## 16  Low8            #108       25.6        47.5          20
## # ... with 3 more variables: pups_born_alive <int>, pups_dead_birth <int>,
## #   pups_survive <int>
filter(litters_data, pups_born_alive > 8)
## # A tibble: 12 x 8
##    group   litter_number gd0_weight gd18_weight gd_of_birth
##    <chr>           <chr>      <dbl>       <dbl>       <int>
##  1  Con7 #1/5/3/83/3-3/2         NA          NA          20
##  2  Con8       #3/83/3-3         NA          NA          20
##  3  Con8     #5/4/3/83/3       28.0          NA          19
##  4  Mod7            #103       21.4        42.1          19
##  5  Mod7       #4/2/95/2       23.5          NA          19
##  6  Mod7      #8/110/3-2         NA          NA          20
##  7  Low7            #107       22.6        42.4          20
##  8  Low7             #98       23.8        43.8          20
##  9  Low7            #102       22.6        43.3          20
## 10  Low7            #101       23.8        42.7          20
## 11  Mod8           #5/93         NA        41.1          20
## 12  Mod8         #2/95/2       28.5        44.5          20
## # ... with 3 more variables: pups_born_alive <int>, pups_dead_birth <int>,
## #   pups_survive <int>
filter(litters_data, !(pups_born_alive == 8))
## # A tibble: 33 x 8
##    group   litter_number gd0_weight gd18_weight gd_of_birth
##    <chr>           <chr>      <dbl>       <dbl>       <int>
##  1  Con7             #85       19.7        34.7          20
##  2  Con7   #5/5/3/83/3-3       26.0        41.4          19
##  3  Con7     #5/4/2/95/2       28.5        44.1          19
##  4  Con7     #4/2/95/3-3         NA          NA          20
##  5  Con7     #2/2/95/3-2         NA          NA          20
##  6  Con7 #1/5/3/83/3-3/2         NA          NA          20
##  7  Con8       #3/83/3-3         NA          NA          20
##  8  Con8     #5/4/3/83/3       28.0          NA          19
##  9  Con8   #1/6/2/2/95-2         NA          NA          20
## 10  Con8       #2/2/95/2         NA          NA          19
## # ... with 23 more rows, and 3 more variables: pups_born_alive <int>,
## #   pups_dead_birth <int>, pups_survive <int>
filter(litters_data, group == "Con7")
## # A tibble: 7 x 8
##   group   litter_number gd0_weight gd18_weight gd_of_birth pups_born_alive
##   <chr>           <chr>      <dbl>       <dbl>       <int>           <int>
## 1  Con7             #85       19.7        34.7          20               3
## 2  Con7       #1/2/95/2       27.0        42.0          19               8
## 3  Con7   #5/5/3/83/3-3       26.0        41.4          19               6
## 4  Con7     #5/4/2/95/2       28.5        44.1          19               5
## 5  Con7     #4/2/95/3-3         NA          NA          20               6
## 6  Con7     #2/2/95/3-2         NA          NA          20               6
## 7  Con7 #1/5/3/83/3-3/2         NA          NA          20               9
## # ... with 2 more variables: pups_dead_birth <int>, pups_survive <int>
filter(litters_data, group != "Con7")
## # A tibble: 42 x 8
##    group   litter_number gd0_weight gd18_weight gd_of_birth
##    <chr>           <chr>      <dbl>       <dbl>       <int>
##  1  Con8       #3/83/3-3         NA          NA          20
##  2  Con8         #2/95/3         NA          NA          20
##  3  Con8     #3/5/2/2/95       28.5          NA          20
##  4  Con8     #5/4/3/83/3       28.0          NA          19
##  5  Con8   #1/6/2/2/95-2         NA          NA          20
##  6  Con8 #3/5/3/83/3-3-2         NA          NA          20
##  7  Con8       #2/2/95/2         NA          NA          19
##  8  Con8   #3/6/2/2/95-3         NA          NA          20
##  9  Mod7             #59       17.0        33.4          19
## 10  Mod7            #103       21.4        42.1          19
## # ... with 32 more rows, and 3 more variables: pups_born_alive <int>,
## #   pups_dead_birth <int>, pups_survive <int>
filter(litters_data, group != "Con7", pups_born_alive == 8)
## # A tibble: 15 x 8
##    group   litter_number gd0_weight gd18_weight gd_of_birth
##    <chr>           <chr>      <dbl>       <dbl>       <int>
##  1  Con8         #2/95/3         NA          NA          20
##  2  Con8     #3/5/2/2/95       28.5          NA          20
##  3  Con8 #3/5/3/83/3-3-2         NA          NA          20
##  4  Mod7             #59       17.0        33.4          19
##  5  Mod7       #3/83/3-2         NA          NA          19
##  6  Low7           #84/2       24.3        40.8          20
##  7  Low7           #85/2       22.2        38.5          20
##  8  Mod8             #97       24.5        42.8          20
##  9  Mod8         #5/93/2         NA          NA          19
## 10  Mod8      #7/110/3-2       27.5        46.0          19
## 11  Mod8           #82/4       33.4        52.7          20
## 12  Low8             #53       21.8        37.2          20
## 13  Low8             #79       25.4        43.8          19
## 14  Low8            #100       20.0        39.2          20
## 15  Low8            #108       25.6        47.5          20
## # ... with 3 more variables: pups_born_alive <int>, pups_dead_birth <int>,
## #   pups_survive <int>

Examples with pups data (from Kaitlin):

filter(pups_data, sex == 1)
## # A tibble: 155 x 6
##    litter_number   sex pd_ears pd_eyes pd_pivot pd_walk
##            <chr> <int>   <int>   <int>    <int>   <int>
##  1           #85     1       4      13        7      11
##  2           #85     1       4      13        7      12
##  3     #1/2/95/2     1       5      13        7       9
##  4     #1/2/95/2     1       5      13        8      10
##  5 #5/5/3/83/3-3     1       5      13        8      10
##  6 #5/5/3/83/3-3     1       5      14        6       9
##  7   #5/4/2/95/2     1      NA      14        5       9
##  8   #4/2/95/3-3     1       4      13        6       8
##  9   #4/2/95/3-3     1       4      13        7       9
## 10   #2/2/95/3-2     1       4      NA        8      10
## # ... with 145 more rows
filter(pups_data, pd_walk < 11 & sex == 2)
## # A tibble: 127 x 6
##    litter_number   sex pd_ears pd_eyes pd_pivot pd_walk
##            <chr> <int>   <int>   <int>    <int>   <int>
##  1     #1/2/95/2     2       4      13        7       9
##  2     #1/2/95/2     2       4      13        7      10
##  3     #1/2/95/2     2       5      13        8      10
##  4     #1/2/95/2     2       5      13        8      10
##  5     #1/2/95/2     2       5      13        6      10
##  6 #5/5/3/83/3-3     2       5      13        8      10
##  7 #5/5/3/83/3-3     2       5      14        7      10
##  8 #5/5/3/83/3-3     2       5      14        8      10
##  9   #5/4/2/95/2     2      NA      14        7      10
## 10   #5/4/2/95/2     2      NA      14        7      10
## # ... with 117 more rows

Mutating variables

Examples:

mutate(litters_data,
  wt_gain = gd18_weight - gd0_weight,
  group = tolower(group)
)
## # A tibble: 49 x 9
##    group   litter_number gd0_weight gd18_weight gd_of_birth
##    <chr>           <chr>      <dbl>       <dbl>       <int>
##  1  con7             #85       19.7        34.7          20
##  2  con7       #1/2/95/2       27.0        42.0          19
##  3  con7   #5/5/3/83/3-3       26.0        41.4          19
##  4  con7     #5/4/2/95/2       28.5        44.1          19
##  5  con7     #4/2/95/3-3         NA          NA          20
##  6  con7     #2/2/95/3-2         NA          NA          20
##  7  con7 #1/5/3/83/3-3/2         NA          NA          20
##  8  con8       #3/83/3-3         NA          NA          20
##  9  con8         #2/95/3         NA          NA          20
## 10  con8     #3/5/2/2/95       28.5          NA          20
## # ... with 39 more rows, and 4 more variables: pups_born_alive <int>,
## #   pups_dead_birth <int>, pups_survive <int>, wt_gain <dbl>
mutate(litters_data,
  wt_gain = gd18_weight - gd0_weight,
  normalized_gain = (wt_gain - mean(wt_gain, na.rm = TRUE)) / sd(wt_gain, na.rm = TRUE)
)
## # A tibble: 49 x 10
##    group   litter_number gd0_weight gd18_weight gd_of_birth
##    <chr>           <chr>      <dbl>       <dbl>       <int>
##  1  Con7             #85       19.7        34.7          20
##  2  Con7       #1/2/95/2       27.0        42.0          19
##  3  Con7   #5/5/3/83/3-3       26.0        41.4          19
##  4  Con7     #5/4/2/95/2       28.5        44.1          19
##  5  Con7     #4/2/95/3-3         NA          NA          20
##  6  Con7     #2/2/95/3-2         NA          NA          20
##  7  Con7 #1/5/3/83/3-3/2         NA          NA          20
##  8  Con8       #3/83/3-3         NA          NA          20
##  9  Con8         #2/95/3         NA          NA          20
## 10  Con8     #3/5/2/2/95       28.5          NA          20
## # ... with 39 more rows, and 5 more variables: pups_born_alive <int>,
## #   pups_dead_birth <int>, pups_survive <int>, wt_gain <dbl>,
## #   normalized_gain <dbl>

Examples with pups data (from Imaani):

mutate(pups_data, pd_minus_seven = pd_pivot - 7)
## # A tibble: 313 x 7
##    litter_number   sex pd_ears pd_eyes pd_pivot pd_walk pd_minus_seven
##            <chr> <int>   <int>   <int>    <int>   <int>          <dbl>
##  1           #85     1       4      13        7      11              0
##  2           #85     1       4      13        7      12              0
##  3     #1/2/95/2     1       5      13        7       9              0
##  4     #1/2/95/2     1       5      13        8      10              1
##  5 #5/5/3/83/3-3     1       5      13        8      10              1
##  6 #5/5/3/83/3-3     1       5      14        6       9             -1
##  7   #5/4/2/95/2     1      NA      14        5       9             -2
##  8   #4/2/95/3-3     1       4      13        6       8             -1
##  9   #4/2/95/3-3     1       4      13        7       9              0
## 10   #2/2/95/3-2     1       4      NA        8      10              1
## # ... with 303 more rows
mutate(pups_data, pd_sum = pd_ears + pd_eyes + pd_pivot + pd_walk)
## # A tibble: 313 x 7
##    litter_number   sex pd_ears pd_eyes pd_pivot pd_walk pd_sum
##            <chr> <int>   <int>   <int>    <int>   <int>  <int>
##  1           #85     1       4      13        7      11     35
##  2           #85     1       4      13        7      12     36
##  3     #1/2/95/2     1       5      13        7       9     34
##  4     #1/2/95/2     1       5      13        8      10     36
##  5 #5/5/3/83/3-3     1       5      13        8      10     36
##  6 #5/5/3/83/3-3     1       5      14        6       9     34
##  7   #5/4/2/95/2     1      NA      14        5       9     NA
##  8   #4/2/95/3-3     1       4      13        6       8     31
##  9   #4/2/95/3-3     1       4      13        7       9     33
## 10   #2/2/95/3-2     1       4      NA        8      10     NA
## # ... with 303 more rows

Arranging things

Arranging is not so exciting, but it is kinda helpful.

arrange(litters_data, group, pups_born_alive)
## # A tibble: 49 x 8
##    group   litter_number gd0_weight gd18_weight gd_of_birth
##    <chr>           <chr>      <dbl>       <dbl>       <int>
##  1  Con7             #85       19.7        34.7          20
##  2  Con7     #5/4/2/95/2       28.5        44.1          19
##  3  Con7   #5/5/3/83/3-3       26.0        41.4          19
##  4  Con7     #4/2/95/3-3         NA          NA          20
##  5  Con7     #2/2/95/3-2         NA          NA          20
##  6  Con7       #1/2/95/2       27.0        42.0          19
##  7  Con7 #1/5/3/83/3-3/2         NA          NA          20
##  8  Con8       #2/2/95/2         NA          NA          19
##  9  Con8   #1/6/2/2/95-2         NA          NA          20
## 10  Con8   #3/6/2/2/95-3         NA          NA          20
## # ... with 39 more rows, and 3 more variables: pups_born_alive <int>,
## #   pups_dead_birth <int>, pups_survive <int>

Piping

Example:

litters_data = 
  read_csv("./data/FAS_litters.csv", col_types = "ccddiiii") %>%
  clean_names() %>%
  select(-pups_survive) %>%
  mutate(
    wt_gain = gd18_weight - gd0_weight,
    group = tolower(group))

Example with pups data (from Junting):

read_csv("./data/FAS_pups.csv", col_types = "ciiiii") %>% 
  clean_names() %>% 
  filter(., sex == 1) %>% 
  select(., -pd_ears) %>% 
  mutate(., pd_pivot_logic = pd_pivot > 7)
## # A tibble: 155 x 6
##    litter_number   sex pd_eyes pd_pivot pd_walk pd_pivot_logic
##            <chr> <int>   <int>    <int>   <int>          <lgl>
##  1           #85     1      13        7      11          FALSE
##  2           #85     1      13        7      12          FALSE
##  3     #1/2/95/2     1      13        7       9          FALSE
##  4     #1/2/95/2     1      13        8      10           TRUE
##  5 #5/5/3/83/3-3     1      13        8      10           TRUE
##  6 #5/5/3/83/3-3     1      14        6       9          FALSE
##  7   #5/4/2/95/2     1      14        5       9          FALSE
##  8   #4/2/95/3-3     1      13        6       8          FALSE
##  9   #4/2/95/3-3     1      13        7       9          FALSE
## 10   #2/2/95/3-2     1      NA        8      10           TRUE
## # ... with 145 more rows