Do the following in R:

- Assign 8 to
`p`

- Assign 6 to
`q`

- Swap the values of
`p`

and`q`

. You are not allowed to directly assign values. You have to “swap” them!

```
# Solution 1 : No extra variables used
p <- 8
q <- 6
p <- p + q
q <- p - q
p <- p - q
p
```

`## [1] 6`

`q`

`## [1] 8`

```
# Solution 2 : Temporary variable used
p <- 8
q <- 6
temp <- p
p <- q
q <- temp
p
```

`## [1] 6`

`q`

`## [1] 8`

- Create a vector of the populations of the 10 largest cities in Turkey.
- Name your vector with the names of the cities.
- Print the names of the cities that have a population between 2 million and 3 million.

```
# Write your answer here
city.pops <- c(14160467, 5045083, 4061074, 2740970, 2158265, 2149260, 2079225, 1844438, 1801980, 1705774)
names(city.pops) <- c("İstanbul", "Ankara", "İzmir", "Bursa", "Antalya", "Adana", "Konya", "Gaziantep", "Şanlıurfa", "Mersin")
names(city.pops)[city.pops > 2000000 & city.pops < 3000000]
```

`## [1] "Bursa" "Antalya" "Adana" "Konya"`

- Create a matrix as follows:
- First consists of numbers: {1,2,3,4,5,6}
- Second row consists of numbers: {2,4,6,8,10,12}
- Third row consists of numbers: {1,3,5,7,9,11}
- Fourth row consists of the sum of the second and third rows
- Fifth row consists of the division of the fourth row with the first row

- Swap the columns of the matrix so that the first row reads: {1,3,5,2,4,6}

```
# Write your answer here
first <- 1:6
second <- first * 2
third <- second - 1
fourth <- second + third
fifth <- fourth / first
m <- matrix(c(first, second, third, fourth, fifth), nrow = 5, byrow = T)
m
```

```
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 1 2.0 3.000000 4.00 5.0 6.000000
## [2,] 2 4.0 6.000000 8.00 10.0 12.000000
## [3,] 1 3.0 5.000000 7.00 9.0 11.000000
## [4,] 3 7.0 11.000000 15.00 19.0 23.000000
## [5,] 3 3.5 3.666667 3.75 3.8 3.833333
```

```
m <- m[, c(1, 3, 5, 2, 4, 6)]
m
```

```
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 1 3.000000 5.0 2.0 4.00 6.000000
## [2,] 2 6.000000 10.0 4.0 8.00 12.000000
## [3,] 1 5.000000 9.0 3.0 7.00 11.000000
## [4,] 3 11.000000 19.0 7.0 15.00 23.000000
## [5,] 3 3.666667 3.8 3.5 3.75 3.833333
```

- Create a factor from the following vector:
`{"red", "red", "blue", "brown", "green", "blue", "red", "green", "green", "brown", "red", "blue"}`

- Display the frequencies of each factor value (level)
- Re-name
`"red"`

as`"purple"`

- Display the number of “purples”

```
# Write your answer here
f <- factor(c("red", "red", "blue", "brown", "green", "blue", "red", "green", "green", "brown", "red", "blue"))
table(f)
```

```
## f
## blue brown green red
## 3 2 3 4
```

```
index.of.red <- which(levels(f) == "red")
levels(f)[index.of.red] <- "purple"
table(f)["purple"]
```

```
## purple
## 4
```

- Create a data frame for the following girls. You must choose the correct column types:
- Canan is 24 years old, blonde, 170cm and 56kgs. She is married.
- Deniz is 35 years old, has brown hair, 173cm and 61kgs. She is married.
- Eda is 21 years old, has brown hair, 156cm and 45kgs. She is not married.
- Fatma is 40 years old, has black hair, 164cm and 60kgs. She is married.
- Gonca is 33 years old, blonde, 182cm and 65kgs. She is not married.
- Hilal is 45 years old, has black hair, 165cm and 58kgs. She is married.
- Lale is 38 years old, has black hair, 175cm and 59kgs. She is not married.
- Mine is 28 years old, has brown hair, 190cm and 71kgs. She is not married.

- Answer the following questions based on this dataframe:
- What is the average age of the group?
- How many girls are above the average height?
- What is the most frequent hair color?
- What is the average height of girls above 60kgs?
- Compare the height/weight ratio of married and single girls. Which is higher?

```
# Write your answer here
name <- c("Canan", "Deniz", "Eda", "Fatma", "Gonca", "Hilal", "Lale", "Mine")
age <- c(24, 35, 21, 40, 33 ,45, 38, 28)
hair.color <- c("blonde", "brown", "brown", "black", "blonde", "black", "black", "brown")
height <- c(170, 173, 156, 164, 182, 165, 175, 190)
weight <- c(56, 61, 45, 60, 65, 58, 59, 71)
married <- c(T, T, F, T, F, T, F, F)
df <- data.frame(name, age, hair.color, height, weight, married)
# What is the average age of the group?
mean(df$age)
```

`## [1] 33`

```
# How many girls are above the average height?
sum(df$height > mean(df$height))
```

`## [1] 4`

```
# What is the most frequent hair color?
names(sort(table(df$hair.color), decreasing = T))[1]
```

`## [1] "black"`

```
# What is the most frequent hair color? [Alternative answer]
t <- table(df$hair.color)
names(t)[which(t == max(t))]
```

`## [1] "black" "brown"`

```
# What is the average height of girls above 60kgs?
mean(df$height[df$weight > 60])
```

`## [1] 181.6667`

```
# Compare the height/weight ratio of married and single girls. Which is higher?
hw.m <- mean((df$height / df$weight)[df$married])
hw.nm <- mean((df$height / df$weight)[!df$married])
if (hw.m > hw.nm)
{
print("Married is higher")
} else if (hw.nm > hw.m)
{
print("Not Married is higher")
} else
{
print("They are equal")
}
```

`## [1] "Not Married is higher"`

- Given the below vector, compute its mean without using
**any**functions.

```
# Do not change the two lines below
set.seed(1024)
v <- runif(100, 1, 20) + rnorm(100, 1, 3)
# Compute the mean of v below
sum <- 0
count <- 0
for (i in v)
{
sum <- sum + i
count <- count + 1
}
# Computed
sum / count
```

`## [1] 11.07399`

```
# Actual
mean(v)
```

`## [1] 11.07399`

- Write a function that takes two numeric vectors and returns a matrix as follows:

```
# Example:
> a <- c(1,3,5)
> b <- c(20, 40, 60)
> c <- your_function(a, b)
> c
[,1] [,2] [,3]
[1,] 21 41 61
[2,] 23 43 63
[3,] 25 45 65
```

```
# Write your answer here
f <- function(a, b)
{
m <- matrix(0, nrow = length(a), ncol = length(b))
for (r in seq_along(a))
for (c in seq_along(b))
m[r, c] <- a[r] + b[c]
m
}
a <- c(1, 3, 5)
b <- c(20, 40, 60)
c <- f(a, b)
c
```

```
## [,1] [,2] [,3]
## [1,] 21 41 61
## [2,] 23 43 63
## [3,] 25 45 65
```

```
# Alternative answer
f2 <- function(a, b)
{
m1 <- matrix(a, nrow = length(a), ncol = length(b))
m2 <- matrix(b, nrow = length(a), ncol = length(b), byrow = T)
m1 + m2
}
a <- c(1, 3, 5)
b <- c(20, 40, 60)
c <- f2(a, b)
c
```

```
## [,1] [,2] [,3]
## [1,] 21 41 61
## [2,] 23 43 63
## [3,] 25 45 65
```

- Write a function that takes a numeric vector
`vec`

and a numeric variable`val`

, and returns`TRUE`

if`val`

exists in`vec`

, and otherwise returns`FALSE`

. You are**not**allowed to use`%in%`

or any other functions present in R.

```
# Write your answer here
f <- function(vec, val)
{
for (i in vec)
{
if (i == val)
return(TRUE)
}
return(FALSE)
}
# Testing
f(c("a", "b", "c", "d", "e"), "d")
```

`## [1] TRUE`

`f(c("a", "b", "c", "d", "e"), "f")`

`## [1] FALSE`