You are on page 1of 56

datacamp.

Ch1. R
R

%%

^ 3 ^ 2 9

%% 5 %% 3 2

9 %% 2 1()

> (5 + 5) / 2
[1] 5
>

> #

> 2^5
[1] 32
>

1
> #

> 28%%6
[1] 4

(1)

R 4

my_var 4

my_var <- 4

my_varR Console 4

> my_var
[1] 4

4 my_var 42

# x 42 x

> x <- 42
>

> # x

>x
[1] 42
>

(2)

5 my_apples

2
<- = R

<-

># 5 my_apples

> my_apples <- 5


>

> # my_apples

> my_apples
[1] 5

(3)

my_oranges 6

my_apples + my_oranges

my_fruit my_apples my_oranges +

<- my_fruit

># my_apples my_oranges 5 6

> my_apples <- 5


> my_oranges <- 6
>

> #

> my_apples + my_oranges


[1] 11
>

> # my_fruit

3
> my_fruit <- my_apples + my_oranges
>

:-) my_apples my_oranges

R +

my_oranges ()

my_fruit

6 my_oranges "six"

R "six"

># my_apples 5

> my_apples <- 5


>

> # my_apples

> my_apples
[1] 5
>

> # my_oranges "six" my_oranges

> my_oranges <- 6


> my_oranges
[1] 6
>

> # my_fruit my_apples my_oranges

> my_fruit <- my_apples + my_oranges


> my_fruit
[1] 11
>

R
4
R

4.5

TRUE or FALSE

... R """apple"

"123""$#@"

my_numeric <- 42 42

my_numeric my_character <- "universe" "universe"

my_character my_logical <- FALSE FALSE my_logical

># 42 my_numeric

> my_numeric <- 42


>

> # "universe" my_character

> my_character <- "universe"


>

> # FALSE my_logical

> my_logical <- FALSE


>

5 + "six"

class()
5
my_numeric

my_character my_logical

>#

> my_numeric <- 42


> my_character <- "universe"
> my_logical <- FALSE
>

> # my_numeric

> class(my_numeric)
[1] "numeric"
>

> # my_character

> class(my_character)
[1] "character"
>

> # my_logical

> class(my_logical)
[1] "logical"

Ch2. vector
(1)

vegas <- "Go!"

># vegas

> vegas <- "Go!"

6
>

(2)

R c()

numeric_vector <- c(1, 2, 3)


character_vector <- c("a", "b", "c")

<- c(TRUE, FALSE, TRUE) boolean_vector

> numeric_vector <- c(1, 10, 49)


> character_vector <- c("a", "b", "c")
>

> # boolean_vector

> boolean_vector <- c(TRUE, FALSE, TRUE)


>

(3)

poker_vector :

$140

7
$50

$20

$120

$240

roulette_vector :

$24

$50

$100

$350

$10

poker_vector roulette_vector

poker_vector roulette_vector

>#

> poker_vector <- c(140, -50, 20, -120, 240)


>

> #

> roulette_vector <- c(-24, -50, 100, -350, 10)


>

8
(1)

names()

some_vector <- c("John Doe", "poker player")


names(some_vector) <- c("Name", "Profession")

some_vector

Name Profession

R Console some_vector

Name Profession
"John Doe" "poker player"

names(roulette_vector) roulette_vector

>#

> poker_vector <- c(140, -50, 20, -120, 240)


>

> #

> roulette_vector <- c(-24, -50, 100, -350, 10)


>

> # poker_vector

> names(poker_vector) <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")


>

> # roulette_vector

> names(roulette_vector) <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")


>

9
(2)

names(poker_vector) <- days_vector poker_vector

roulette_vector

>#

> poker_vector <- c(140, -50, 20, -120, 240)


>

> #

> roulette_vector <- c(-24, -50, 100, -350, 10)


>

> # days_vector

> days_vector <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")


>

> # days_vector roulette_vector poker_vector

> names(poker_vector) <- days_vector


> names(roulette_vector) <- days_vector

(1)

10

R 2

c(1, 2, 3) + c(4, 5, 6)
c(1 + 4, 2 + 5, 3 + 6)
c(5, 7, 9)

a <- c(1, 2, 3)
b <- c(4, 5, 6)
c <- a + b

+ A_vector B_vector <- total_vector

> A_vector <- c(1, 2, 3)


> B_vector <- c(4, 5, 6)
>

> # A_vector B_vector

> total_vector <- A_vector + B_vector


>

> # total_vector

> total_vector
[1] 5 7 9
>
11
(2)

roulette_vector poker_vector

2 total_daily

>#

> poker_vector <- c(140, -50, 20, -120, 240)


> roulette_vector <- c(-24, -50, 100, -350, 10)
> days_vector <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")
> names(poker_vector) <- days_vector
> names(roulette_vector) <- days_vector
>

> # total_daily

> total_daily <- poker_vector + roulette_vector


>

(3)

sum()

total_poker <- sum(poker_vector)

sum() roulette_vector total_week

roulette_vector poker_vector

>#
12
> poker_vector <- c(140, -50, 20, -120, 240)
> roulette_vector <- c(-24, -50, 100, -350, 10)
> days_vector <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")
> names(poker_vector) <- days_vector
> names(roulette_vector) <- days_vector
>

> #

> total_poker <- sum(poker_vector)


>

> #

> total_roulette <- sum(roulette_vector)


>

> #

> total_week <- total_roulette + total_poker


>

> # total_week

> total_week
[1] -84
>

...

( > )

6 > 5 6 5 (TRUE FALSE)

>#

13
> poker_vector <- c(140, -50, 20, -120, 240)
> roulette_vector <- c(-24, -50, 100, -350, 10)
> days_vector <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")
> names(poker_vector) <- days_vector
> names(roulette_vector) <- days_vector
>

> #

> total_poker <- sum(poker_vector)


> total_roulette <- sum(roulette_vector)
>

> #

> total_poker > total_roulette


[1] TRUE

(1)

Margarita...

total_vector

R ...

poker_vector[1] poker_vector[2]...

1 0

poker_vector poker_vector[3]

>#

> poker_vector <- c(140, -50, 20, -120, 240)


> roulette_vector <- c(-24, -50, 100, -350, 10)
> days_vector <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")

14
> names(poker_vector) <- days_vector
> names(roulette_vector) <- days_vector
>

> #

> poker_wednesday <- poker_vector[3]


>

(2)

c(1, 5)

poker_vector[c(1, 5)]

c(2, 3, 4) poker_vector

>#

> poker_vector <- c(140, -50, 20, -120, 240)


> roulette_vector <- c(-24, -50, 100, -350, 10)
> days_vector <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")
> names(poker_vector) <- days_vector
> names(roulette_vector) <- days_vector
>

> #

> poker_midweek <- poker_vector[c(2, 3, 4)]


>

(3)

c(2, 3, 4) poker_vector

c(2, 3, 4) 2:4

15
poker_vector[2:4] 2:4

2:5 roulette_vector

roulette_selection_vector

>#

> poker_vector <- c(140, -50, 20, -120, 240)


> roulette_vector <- c(-24, -50, 100, -350, 10)
> days_vector <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")
> names(poker_vector) <- days_vector
> names(roulette_vector) <- days_vector
>

> #

> roulette_selection_vector <- roulette_vector[2:5]


>

(4)

Monday, Tuesday, ...

poker_vector["Monday"]

poker_vector "Monday"

poker_vector[c("Monday","Tuesday")]

c("Monday", "Tuesday", "Wednesday") poker_vector

16
mean(poker_start) poker_start

>#

> poker_vector <- c(140, -50, 20, -120, 240)


> roulette_vector <- c(-24, -50, 100, -350, 10)
> days_vector <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")
> names(poker_vector) <- days_vector
> names(roulette_vector) <- days_vector
>

> #

> poker_start <- poker_vector[c("Monday", "Tuesday", "Wednesday")]


>

> # poker_start

> mean(poker_start)
[1] 36.66667
>

<

>

<=

>=

==

17
!=

R Console 6 > 5 TRUER

> c(4, 5, 6) > 5


[1] FALSE FALSE TRUE

TRUE FALSE

R some_vector > 0 poker_vector

>#

> poker_vector <- c(140, -50, 20, -120, 240)


> roulette_vector <- c(-24, -50, 100, -350, 10)
> days_vector <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")
> names(poker_vector) <- days_vector
> names(roulette_vector) <- days_vector
>

> #

> selection_vector <- poker_vector > 0


>

> # selection_vector

> selection_vector
Monday Tuesday Wednesday Thursday Friday
TRUE FALSE TRUE FALSE TRUE
>

18
selection_vector <- poker_vector > 0

selection_vector poker_vector

poker_vector[selection_vector]

R selection_vector TRUE

poker_vector[selection_vector] poker_vector

poker_winning_days

>#

> poker_vector <- c(140, -50, 20, -120, 240)


> roulette_vector <- c(-24, -50, 100, -350, 10)
> days_vector <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")
> names(poker_vector) <- days_vector
> names(roulette_vector) <- days_vector
>

> #

> selection_vector <- poker_vector > 0


>

selection_vector

roulette_vector[selection_vector] roulette_vector

>#

> poker_vector <- c(140, -50, 20, -120, 240)


> roulette_vector <- c(-24, -50, 100, -350, 10)
> days_vector <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")

19
> names(poker_vector) <- days_vector
> names(roulette_vector) <- days_vector
>

> #

> selection_vector <- roulette_vector > 0


>

> # roulette_vector

> roulette_winning_days <- roulette_vector[selection_vector]


>

Ch3. matrix

()

matrix()

matrix(1:9, byrow = TRUE, nrow = 3)

matrix()

1:9 c(1, 2, 3, 4, 5, 6, 7, 8, 9)

byrow

byrow = FALSE

nrow 3

3 1 9 byrow = TRUE

20
># 3 1:9

> matrix(1:9, byrow = TRUE, nrow = 3)


[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
>

c(new_hope, empire_strikes, return_jedi)

box_office

matrix() 3

box_office nrow = 3

byrow = TRUE star_wars_matrix

box_office <- c(new_hope, empire_strikes, return_jedi)

21
matrix(box_office, nrow = ..., by_row = ...)

>#

> new_hope <- c(460.998, 314.4)


> empire_strikes <- c(290.475, 247.900)
> return_jedi <- c(309.306, 165.8)
>

> # box_office

> box_office <- c(new_hope, empire_strikes, return_jedi)


>

> # star_wars_matrix

> star_wars_matrix <- matrix(box_office, nrow = 3, byrow = TRUE)


>

> new_hope <- c(460.998, 314.4)


> empire_strikes <- c(290.475, 247.900)
> return_jedi <- c(309.306, 165.8)
>

> # star_wars_matrix

> star_wars_matrix <- matrix(c(new_hope, empire_strikes, return_jedi), nrow = 3, byrow = TRUE)


>

> # region titles

> region <- c("US", "non-US")


> titles <- c("A New Hope", "The Empire Strikes Back", "Return of the Jedi")
>

> # region

> colnames(star_wars_matrix) <- region


>

> # titles
22
> rownames(star_wars_matrix) <- titles
>

> # star_wars_matrix

> star_wars_matrix
US non-US
A New Hope 460.998 314.4
The Empire Strikes Back 290.475 247.9
Return of the Jedi 309.306 165.8

R rowSums()

# star_wars_matrix

> box_office <- c(460.998, 314.4, 290.475, 247.900, 309.306, 165.8)


> star_wars_matrix <- matrix(box_office, nrow = 3, byrow = TRUE,
dimnames = list(c("A New Hope", "The Empire Strikes Back", "Return of
the Jedi"),
c("US", "non-US")))
>

> #

> worldwide_vector <- rowSums(star_wars_matrix)

cbind() matrix1 matrix2 vector1

big_matrix

big_matrix <- cbind(matrix1, matrix2, vector1 ...)

> star_wars_matrix <- matrix(box_office, nrow = 3, byrow = TRUE,


dimnames = list(c("A New Hope", "The Empire Strikes Back", "Return of
the Jedi"),
c("US", "non-US")))
>

23
> #

> worldwide_vector <- rowSums(star_wars_matrix)


>

> # worldwide_vector star_wars_matrix

> all_wars_matrix <- cbind(star_wars_matrix, worldwide_vector)


>

cbind() rbind()()

R ()

star_wars_matrix

star_wars_matrix2

R Console ls() 2

># star_wars_matrix star_wars_matrix2

> star_wars_matrix
US non-US
A New Hope 461.0 314.4
The Empire Strikes Back 290.5 247.9
Return of the Jedi 309.3 165.8
> star_wars_matrix2
US non-US
The Phantom Menace 474.5 552.5
Attack of the Clones 310.7 338.7
Revenge of the Sith 380.3 468.5
>

> # 2

> all_wars_matrix <- rbind(star_wars_matrix, star_wars_matrix2)


>
24
> # all_wars_matrix

> all_wars_matrix
US non-US
A New Hope 461.0 314.4
The Empire Strikes Back 290.5 247.9
Return of the Jedi 309.3 165.8
The Phantom Menace 474.5 552.5
Attack of the Clones 310.7 338.7
Revenge of the Sith 380.3 468.5
>

cbind() rbind()colSums() rowSums()R

all_wars_matrix all_wars_matrix

colSums() function star_wars_matrix

# all_wars_matrix

> all_wars_matrix
US non-US
A New Hope 461.0 314.4
The Empire Strikes Back 290.5 247.9
Return of the Jedi 309.3 165.8
The Phantom Menace 474.5 552.5
Attack of the Clones 310.7 338.7
Revenge of the Sith 380.3 468.5
>

> #

> total_revenue_vector <- colSums(all_wars_matrix)


>

> # total_revenue_vector

> total_revenue_vector

25
US non-US
2226.3 2087.8
>

[ ] 2

my_matrix[1,2]

my_matrix[1:3,2:4]

my_matrix[,1]

my_matrix[1,]

all_wars_matrix

my_matrix[,2] my_matrix

># all_wars_matrix

> all_wars_matrix
US non-US
A New Hope 461.0 314.4
The Empire Strikes Back 290.5 247.9
Return of the Jedi 309.3 165.8
The Phantom Menace 474.5 552.5
Attack of the Clones 310.7 338.7
Revenge of the Sith 380.3 468.5
>

> #

26
> non_us_all <- all_wars_matrix[,2]
>

> #

> mean(non_us_all)
[1] 347.9667
>

> #

> non_us_some <- all_wars_matrix[1:2,2]


>

> #

> mean(non_us_some)
[1] 281.15
>

(1)

+ - / *

2 * my_matrix my_matrix 2

all_wars_matrix 5 5

all_wars_matrix 5

># all_wars_matrix

> all_wars_matrix
US non-US
A New Hope 461.0 314.4
The Empire Strikes Back 290.5 247.9
Return of the Jedi 309.3 165.8
The Phantom Menace 474.5 552.5
Attack of the Clones 310.7 338.7

27
Revenge of the Sith 380.3 468.5
>

> #

> visitors <- all_wars_matrix / 5


>

> #

> visitors
US non-US
A New Hope 92.20 62.88
The Empire Strikes Back 58.10 49.58
Return of the Jedi 61.86 33.16
The Phantom Menace 94.90 110.50
Attack of the Clones 62.14 67.74
Revenge of the Sith 76.06 93.70
>

(2)

2 * my_matrix my_matrix 2 my_matrix1 *

my_matrix2

ticket_prices_matrix (imagination)

%*%

mean()

visitors[ ,1] visitors

# all_wars_matrix ticket_prices_matrix

> all_wars_matrix
US non-US
A New Hope 461.0 314.4
28
The Empire Strikes Back 290.5 247.9
Return of the Jedi 309.3 165.8
The Phantom Menace 474.5 552.5
Attack of the Clones 310.7 338.7
Revenge of the Sith 380.3 468.5
> ticket_prices_matrix
US non-US
A New Hope 5.0 5.0
The Empire Strikes Back 6.0 6.0
Return of the Jedi 7.0 7.0
The Phantom Menace 4.0 4.0
Attack of the Clones 4.5 4.5
Revenge of the Sith 4.9 4.9
>

> #

> visitors <- all_wars_matrix / ticket_prices_matrix


>

> #

> visitors
US non-US
A New Hope 92.20000 62.88000
The Empire Strikes Back 48.41667 41.31667
Return of the Jedi 44.18571 23.68571
The Phantom Menace 118.62500 138.12500
Attack of the Clones 69.04444 75.26667
Revenge of the Sith 77.61224 95.61224
>

> #

> us_visitors <- visitors[ ,1]


>

Ch4.
(1)

29

theory "factors for categorical variables"

(<-)

# theory

> theory <- "factors for categorical variables"


>

(2)

R factor() 5

gender_vector

gender_vector <- c("Male","Female","Female","Male","Male")

gender_vector 2 R "Male"

"Female"

factor()

factor_gender_vector <- factor(gender_vector)

30
factor() gender_vector

factor_gender_vector

factor_gender_vector R

> gender_vector <- c("Male", "Female", "Female", "Male", "Male")


>

> # gender_vector

> factor_gender_vector <- factor(gender_vector)


>

> # factor_gender_vector

> factor_gender_vector
[1] Male Female Female Male Male
Levels: Female Male
>

(3)

animals_vector

"Elephant" "Giraffe" "Donkey" "Horse"

temperature_vector

"Low" "Medium" "High" "Medium" "Low" "High"

"Medium" .

31
Submit Answer R Console R

>#

> animals_vector <- c("Elephant", "Giraffe", "Donkey", "Horse")


> factor_animals_vector <- factor(animals_vector)
> factor_animals_vector
[1] Elephant Giraffe Donkey Horse
Levels: Donkey Elephant Giraffe Horse
>

> #

> temperature_vector <- c("High", "Low", "High","Low", "Medium")


> factor_temperature_vector <- factor(temperature_vector, order = TRUE, levels = c("Low", "Medium",
"High"))
> factor_temperature_vector
[1] High Low High Low Medium
Levels: Low < Medium < High
>

levels()

levels(factor_vector) <- c("name1", "name2",...)

"M" "F"

survey_vector <- c("M", "F", "F", "M", "M")

"Male" "Female"

"M" "F"

R Console

levels(factor_survey_vector) [1] "F" "M" R

32
levels(factor_survey_vector)

<- c("Female", "Male") "F" "Female" "M" "Male"

factor_survey_vector "F" "M" c("Female", "Male")

"Female" "Male"

R Console

levels(factor_survey_vector)

># factor_survey_vector

> survey_vector <- c("M", "F", "F", "M", "M")


> factor_survey_vector <- factor(survey_vector)
>

> # factor_survey_vector

> levels(factor_survey_vector) <- c("Female", "Male")


>
> factor_survey_vector
[1] Male Female Female Male Male
Levels: Female Male
>

summary()summary()

summary(my_var)

33
summary()

survey_vector factor_survey_vector summary()

># factor_survey_vector

> survey_vector <- c("M", "F", "F", "M", "M")


> factor_survey_vector <- factor(survey_vector)
> levels(factor_survey_vector) <- c("Female", "Male")
> factor_survey_vector
[1] Male Female Female Male Male
Levels: Female Male
>

> # survey_vector

> summary(survey_vector)
Length Class Mode
5 character character
>

> # factor_survey_vector

> summary(factor_survey_vector)
Female Male
2 3
>

factor_survey_vector R

# factor_survey_vector

> survey_vector <- c("M", "F", "F", "M", "M")

34
> factor_survey_vector <- factor(survey_vector)
> levels(factor_survey_vector) <- c("Female", "Male")
>

> #

> male <- factor_survey_vector[1]


>

> #

> female <- factor_survey_vector[2]


>

> # ''

> male > female


Warning message: '>' not meaningful for factors
[1] NA
>

(1)

"Male" "Female" () R >

R ...

5 "slow"

"fast" "insane" speed_vector

speed_vector

1 fast

2 slow

3 slow

4 fast

35
5 insane

speed_vector "fast" "slow"

># speed_vector

> speed_vector <- c("fast", "slow", "slow", "fast", "insane")


>

(2)

speed_vector

factor() speed_vector

2 ordered levels

factor(some_vector,
ordered = TRUE,
levels = c("lev1", "lev2" ...))

factor() ordered TRUE

levels

speed_vector factor_speed_vector ordered TRUE

levels c("slow", "fast", "insane")

factor() speed_character_vector factor_speed_vector

ordered TRUE levels =

c("slow", "fast", "insane").

36
># speed_vector

> speed_vector <- c("fast", "slow", "slow", "fast", "insane")


>

> # speed_vector

> factor_speed_vector <- factor(speed_vector, ordered = TRUE, levels = c("slow", "fast", "insane"))
>

> # factor_speed_vector

> factor_speed_vector
[1] fast slow slow fast insane
Levels: slow < fast < insane
> summary(factor_speed_vector)
slow fast insane
2 2 1
>

2 5

factor_speed_vector >

[2] factor_speed_vector da2

[5] factor_speed_vector da5

da2 da5 >

factor_speed_vector[n] n

2 > da3 > da4

37
># factor_speed_vector

> speed_vector <- c("fast", "slow", "slow", "fast", "insane")


> factor_speed_vector <- factor(speed_vector, ordered = TRUE, levels = c("slow", "fast", "insane"))
>

> # 2

> da2 <- factor_speed_vector[2]


>

> # 5

> da5 <- factor_speed_vector[5]


>

> # 2 5

> da2 > da5


[1] FALSE
>

Ch5. data frame


...

38
SAS SPSS

># R

> mtcars
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2
Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4
Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
39
Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
>

R head()tail()

head() tail()

head(mtcars) mtcars

># mtcars head()

> head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
>

str()str()

40
32

11

mpg, cyl ...

str()

mtcars str()

># mtcars

> str(mtcars)
'data.frame': 32 obs. of 11 variables:
$ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
$ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
$ disp: num 160 160 108 258 360 ...
$ hp : num 110 110 93 110 175 105 245 62 95 123 ...
$ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
$ wt : num 2.62 2.88 2.32 3.21 3.44 ...
$ qsec: num 16.5 17 18.6 19.4 17 ...
$ vs : num 0 0 1 1 0 1 0 1 1 1 ...
$ am : num 1 1 1 0 0 0 0 0 0 0 ...
$ gear: num 4 4 4 3 3 3 3 4 4 4 ...
$ carb: num 4 4 1 1 2 1 4 2 2 4 ...
>

(1)

41

TRUE FALSE

Wikipedia 5

name type diameter rotation rings 5

data.frame() 5

data.frame() name type diameter rotation rings

data.frame() planets_df

data.frame() data.frame(planets, type, diameter)

> name <- c("Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune")
> type <- c("Terrestrial planet", "Terrestrial planet", "Terrestrial planet",
"Terrestrial planet", "Gas giant", "Gas giant", "Gas giant", "Gas giant")
> diameter <- c(0.382, 0.949, 1, 0.532, 11.209, 9.449, 4.007, 3.883)
> rotation <- c(58.64, -243.02, 1, 1.03, 0.41, 0.43, -0.72, 0.67)
> rings <- c(FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE)
42
>

> #

> planets_df <- data.frame(name, type, diameter, rotation, rings)


>

(2)

planets_df 8 5

planets_df str(planets_df)

># planets_df

> str(planets_df)
'data.frame': 8 obs. of 5 variables:
$ name : Factor w/ 8 levels "Earth","Jupiter",..: 4 8 1 3 2 6 7 5
$ type : Factor w/ 2 levels "Gas giant","Terrestrial planet": 2 2 2 2 1 1 1 1
$ diameter: num 0.382 0.949 1 0.532 11.209 ...
$ rotation: num 58.64 -243.02 1 1.03 0.41 ...
$ rings : logi FALSE FALSE FALSE FALSE TRUE TRUE ...

(1)

[ ]

my_df[1,2] my_df

my_df[1:3,2:4] my_df

my_df[1, ]

planets_df

43
planets_df[2,3]

># planets_df

>

> # ()

> planets_df[1, 3]
[1] 0.382
>

> # ()

> planets_df[4, ]
name type diameter rotation rings
4 Mars Terrestrial planet 0.532 1.03 FALSE
>

(2)

type

planets_df[1:3,1]

type

planets_df[1:3,"type"]

planets_df[1:5, ...] 5 ... "diameter"

># planets_df

>
44
> # diameter 5

> planets_df[1:5, "diameter"]


[1] 0.382 0.949 1.000 0.532 11.209
>

(1)

diameter

planets_df[,3]
planets_df[,"diameter"]

planets_df$diameter

$ rings planets_df rings_vector

rings_vector

planets_df$diameter diameter planets_df

rings

># planets_df

>

> # planets_df rings

> rings_vector <- planets_df$rings


>

> # rings_vector

> rings_vector
[1] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE
>

45
(2)

...

R Console rings_vector

[1] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE

FALSETRUE

rings_vector

[rings_vector, ]

># planets_df rings_vector

>

> #

> planets_df[rings_vector, ]
name type diameter rotation rings
5 Jupiter Gas giant 11.209 0.41 TRUE
6 Saturn Gas giant 9.449 0.43 TRUE
7 Uranus Gas giant 4.007 -0.72 TRUE
8 Neptune Gas giant 3.883 0.67 TRUE
>

planets_df

46
subset()subset()

subset(my_df, subset = some_condition)

subset() R

rings_vector

subset(planets_df, subset = rings)

planets_df subset()

diameter < 1

># planets_df

>

> # <1

> subset(planets_df, subset = diameter < 1)


name type diameter rotation rings
1 Mercury Terrestrial planet 0.382 58.64 FALSE
2 Venus Terrestrial planet 0.949 -243.02 FALSE
4 Mars Terrestrial planet 0.532 1.03 FALSE
>

007

R order()

order()

> a <- c(100, 10, 1000)


> order(a)
47
[1] 2 1 3

10 1 100

order(a) a

> a[order(a)]
[1] 10 100 1000

># R Console order Submit Answer

order() diameter

planets_df$diameter (planets_df diameter ) order()

positions

positions planets_df

order(planets_df$diameter) positions

positions planets_df[...] ...

># order() positions

> positions <- order(planets_df$diameter)


>

> # positions planets_df

48
> planets_df[positions, ]
name type diameter rotation rings
1 Mercury Terrestrial planet 0.382 58.64 FALSE
4 Mars Terrestrial planet 0.532 1.03 FALSE
2 Venus Terrestrial planet 0.949 -243.02 FALSE
3 Earth Terrestrial planet 1.000 1.00 FALSE
8 Neptune Gas giant 3.883 0.67 TRUE
7 Uranus Gas giant 4.007 -0.72 TRUE
6 Saturn Gas giant 9.449 0.43 TRUE
5 Jupiter Gas giant 11.209 0.41 TRUE
>

Ch6. list
(1)

R ;-)

> # Submit Answer

>

49
(2)

# Submit Answer

list()

my_list <- list(comp1, comp2 ...)

list

my_list my_vector my_matrix my_df

list() my_vector my_matrix my_df

># 1 10

> my_vector <- 1:10


>

> # 1 9

> my_matrix <- matrix(1:9, ncol = 3)


>

50
> # mtcars 10

> my_df <- mtcars[1:10,]


>

> #

> my_list <- list(my_vector, my_matrix, my_df)


>

(1)

my_list <- list(name1 = your_comp1,


name2 = your_comp2)

name1 name2

names()

my_list <- list(your_comp1, your_comp2)


names(my_list) <- c("name1", "name2")

my_vector vec my_matrix mat

my_df df

my_list

my_list <- list(vec = my_vector)

51

># 1 10

> my_vector <- 1:10


>

> # 1 9

> my_matrix <- matrix(1:9, ncol = 3)


>

> # mtcars 10

> my_df <- mtcars[1:10,]


>

> # list()

> my_list <- list(vec = my_vector, mat = my_matrix, df = my_df)


>

> # my_list

> my_list
$vec
[1] 1 2 3 4 5 6 7 8 9 10

$mat
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9

$df
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4

52
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
>

(2)

"The Shining" mov act rev

R Console

shining_list 3

mov

act

rev

movienameactors reviews)

shining_list <- list(moviename = mov)

act rev

># movact rev

>

> # shining_list

> shining_list <- list(moviename = mov, actors = act, reviews = rev)


>

53

shining_list

shining_list[[1]]

[ ] R Console

[[ ]] $

shining_list[["reviews"]]
shining_list$reviews

shining_list[[2]][1]

actors(shining_list[[2]])([1])R Console

shining_list

$actors

shining_list$actors[3]

># shining_list

>

> #
54
> shining_list$actors
[1] "Jack Nicholson" "Shelley Duvall" "Danny Lloyd" "Scatman Crothers"
[5] "Barry Nelson"
>

> #

> shining_list$actors[2]
[1] "Shelley Duvall"
>

M. McDowell

c()

ext_list <- c(my_list , my_val)

my_list my_val

ext_list <- c(my_list, my_name = my_val)

year = 1980 shining_list

shining_list_full

str() shining_list_full

shining_list <- c(shining_list, ...) ...

# shining_list
55
>

> # c() shining_list

> shining_list_full <- c(shining_list, year = 1980)


>

> # shining_list_full

> str(shining_list_full)
List of 4
$ moviename: chr "The Shining"
$ actors : chr [1:5] "Jack Nicholson" "Shelley Duvall" "Danny Lloyd" "Scatman Crothers" ...
$ reviews :'data.frame': 3 obs. of 3 variables:
..$ scores : num [1:3] 4.5 4 5
..$ sources : Factor w/ 3 levels "IMDb1","IMDb2",..: 1 2 3
..$ comments: Factor w/ 3 levels "A masterpiece of psychological horror",..: 3 2 1
$ year : num 1980
>

56

You might also like