Monday, October 15, 2015

Before we get started …

  • install the package "datasets" and "MASS", and load it in
require(datasets)
require(MASS)
## Loading required package: MASS
## Warning: package 'MASS' was built under R version 3.1.3
  • We would use "sleep" and "phones" in this lab session

Recap with quick questions

Question 1

What are the differences between dataframes and lists?

Answer 1

# - lists can contain various types of data
# - lists can have various lengths of data

Question 2

Explore datasets "sleep" and "phones".

Which dataset is a list?

Answer 2

# phones!
str(sleep)
## 'data.frame':    20 obs. of  3 variables:
##  $ extra: num  0.7 -1.6 -0.2 -1.2 -0.1 3.4 3.7 0.8 0 2 ...
##  $ group: Factor w/ 2 levels "1","2": 1 1 1 1 1 1 1 1 1 1 ...
##  $ ID   : Factor w/ 10 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ...
str(phones)
## List of 2
##  $ year : num [1:24] 50 51 52 53 54 55 56 57 58 59 ...
##  $ calls: num [1:24] 4.4 4.7 4.7 5.9 6.6 7.3 8.1 8.8 10.6 12 ...

Question 3

Which column within "sleep" data is an ordered factor?

Answer 3

# None!
str(sleep)
## 'data.frame':    20 obs. of  3 variables:
##  $ extra: num  0.7 -1.6 -0.2 -1.2 -0.1 3.4 3.7 0.8 0 2 ...
##  $ group: Factor w/ 2 levels "1","2": 1 1 1 1 1 1 1 1 1 1 ...
##  $ ID   : Factor w/ 10 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ...
str(phones)
## List of 2
##  $ year : num [1:24] 50 51 52 53 54 55 56 57 58 59 ...
##  $ calls: num [1:24] 4.4 4.7 4.7 5.9 6.6 7.3 8.1 8.8 10.6 12 ...

Question 4

Extract the rows of group 1 in "sleep".

Answer 4

sleep[sleep$group==1,]
##    extra group ID
## 1    0.7     1  1
## 2   -1.6     1  2
## 3   -0.2     1  3
## 4   -1.2     1  4
## 5   -0.1     1  5
## 6    3.4     1  6
## 7    3.7     1  7
## 8    0.8     1  8
## 9    0.0     1  9
## 10   2.0     1 10

Question 5

Extract the rows that have negative values in extra column.

Answer 5

sleep[sleep$extra < 0,]
##    extra group ID
## 2   -1.6     1  2
## 3   -0.2     1  3
## 4   -1.2     1  4
## 5   -0.1     1  5
## 15  -0.1     2  5

Question 6

Explore dataset "phones", and extract the first 6 elements in variable year.

Answer 6

head(phones$year)
## [1] 50 51 52 53 54 55

Question 7

Create a new list All, which contains both the datasets "sleep" and "phones".

Answer 7

All <- list(sleep = sleep, phones = phones)

Exercises

Before we get started …

Copy and past the below information.

movies <- c('Titanic', 'Minions')
like <- c(rep('bad',5), rep('good',2), rep('good', 100))
comments <- c('hate!', 'awful~', 'AWFUL!!','not recommended', 
              'the music is not good', 'love the actors', 
              rep('soooooo cute!!!!', 20))

Exercises

  • Create a list, reviews. Name the variables within reviews as movies, like, and comments
  • How many people have sent their comments on the movies?

A total of 107 people sent their reviews to the two movies. The first 7 elements of like are for the movie "Titanic", and the rest is for "Minions". In addition, the first 6 elements of comments are given by the first 6 "Titanic" reviewers, and the rest of 20 elements is provided by the last 20 "Minions" reviewers.

  • Create a dataframe review_data, and convert the list reviews into a dataframe (with the information given above).
  • Extract the rows with good comments.

Answers

reviews <- list(movies=movies, like=like, comments=comments)

length(reviews[[3]])
## [1] 26
review_data <- data.frame(
  movies = c(rep('Titanic',7), rep('Minions',100)), like = like, 
  comments = c(head(comments), rep('None',81), tail(comments,20)))

review_data[review_data$like=='good',]
##      movies like         comments
## 6   Titanic good  love the actors
## 7   Titanic good             None
## 8   Minions good             None
## 9   Minions good             None
## 10  Minions good             None
## 11  Minions good             None
## 12  Minions good             None
## 13  Minions good             None
## 14  Minions good             None
## 15  Minions good             None
## 16  Minions good             None
## 17  Minions good             None
## 18  Minions good             None
## 19  Minions good             None
## 20  Minions good             None
## 21  Minions good             None
## 22  Minions good             None
## 23  Minions good             None
## 24  Minions good             None
## 25  Minions good             None
## 26  Minions good             None
## 27  Minions good             None
## 28  Minions good             None
## 29  Minions good             None
## 30  Minions good             None
## 31  Minions good             None
## 32  Minions good             None
## 33  Minions good             None
## 34  Minions good             None
## 35  Minions good             None
## 36  Minions good             None
## 37  Minions good             None
## 38  Minions good             None
## 39  Minions good             None
## 40  Minions good             None
## 41  Minions good             None
## 42  Minions good             None
## 43  Minions good             None
## 44  Minions good             None
## 45  Minions good             None
## 46  Minions good             None
## 47  Minions good             None
## 48  Minions good             None
## 49  Minions good             None
## 50  Minions good             None
## 51  Minions good             None
## 52  Minions good             None
## 53  Minions good             None
## 54  Minions good             None
## 55  Minions good             None
## 56  Minions good             None
## 57  Minions good             None
## 58  Minions good             None
## 59  Minions good             None
## 60  Minions good             None
## 61  Minions good             None
## 62  Minions good             None
## 63  Minions good             None
## 64  Minions good             None
## 65  Minions good             None
## 66  Minions good             None
## 67  Minions good             None
## 68  Minions good             None
## 69  Minions good             None
## 70  Minions good             None
## 71  Minions good             None
## 72  Minions good             None
## 73  Minions good             None
## 74  Minions good             None
## 75  Minions good             None
## 76  Minions good             None
## 77  Minions good             None
## 78  Minions good             None
## 79  Minions good             None
## 80  Minions good             None
## 81  Minions good             None
## 82  Minions good             None
## 83  Minions good             None
## 84  Minions good             None
## 85  Minions good             None
## 86  Minions good             None
## 87  Minions good             None
## 88  Minions good soooooo cute!!!!
## 89  Minions good soooooo cute!!!!
## 90  Minions good soooooo cute!!!!
## 91  Minions good soooooo cute!!!!
## 92  Minions good soooooo cute!!!!
## 93  Minions good soooooo cute!!!!
## 94  Minions good soooooo cute!!!!
## 95  Minions good soooooo cute!!!!
## 96  Minions good soooooo cute!!!!
## 97  Minions good soooooo cute!!!!
## 98  Minions good soooooo cute!!!!
## 99  Minions good soooooo cute!!!!
## 100 Minions good soooooo cute!!!!
## 101 Minions good soooooo cute!!!!
## 102 Minions good soooooo cute!!!!
## 103 Minions good soooooo cute!!!!
## 104 Minions good soooooo cute!!!!
## 105 Minions good soooooo cute!!!!
## 106 Minions good soooooo cute!!!!
## 107 Minions good soooooo cute!!!!