Exercise 1 - Vectors

Author

NURUL ELLYANA QISTINA BINTI SAHALAN

Exercise

1. Create a numeric variable “num_var” with the value “42.5”.

num_var <- 42.5

2. Create a character variable “char_var” with the value “R is fun!”

char_var <- "R is fun!"

3. Print the data type “char_var”

class(char_var)
[1] "character"

4. Create a list “student_info” with the following elements:

  1. “name”: “Mohammad Nasir Abdullah”

  2. “age”: 18

  3. “grades”: a numeric vector with values “99, 100, 89”

student_info <- list(
  name = c("Mohammad", "Nasir", "Abdullah"),
  age = c(18),
  grades = c(99,100,89)
)
student_info
$name
[1] "Mohammad" "Nasir"    "Abdullah"

$age
[1] 18

$grades
[1]  99 100  89

5. Create a data frame “df_students” with the following columns

  1. “Name”: “John”, “Pablo”

  2. “Age”: “22”, “30”

  3. “Grade”: “A”, “C”

df_students <- data.frame(
  Name = c("John","Pablo"),
  Age = c(22,30),
  Grade = factor(c("A","C"))
)
df_students
   Name Age Grade
1  John  22     A
2 Pablo  30     C

6. Create a numeric vector “vec_num” with the values “5,10,15,20”.

vec_num <- c(5,10,15,20)

7. Extract the second and third elements from “vec_num”.

vec_num[c(2,3)]
[1] 10 15

8. Create a vector “vec_seq” that contains a sequence of number from 1 to 10.

vec_seq <- 1:10
vec_seq
 [1]  1  2  3  4  5  6  7  8  9 10

9. Create a vector “vec_rand” with 5 random numbers between 1 and 100.

vec_rand <- sample (1:100, size = 5)
vec_rand
[1] 19  4 18 56 41

10. Create a character vector “vec_char” with the values “apple”, “banana”, “cherry”.

vec_char <- c("apple", "banana", "cherry")

11. Use the substr() function to extract the first 3 characters from each elements of “var_char”

substr(vec_char, 1, 3)
[1] "app" "ban" "che"

12. Create a character vector “vec_colors” with the values “red”, “blue”, “green”, “red”, “blue”.

vec_colors <- c("red", "blue", "green", "red", "blue")

13. Convert “vec_colors” into a factor vector “factor_colors”

factor_colors <- as.factor(vec_colors)
class(factor_colors)
[1] "factor"

14. Print the levels of “factor_colors”

levels(factor_colors)
[1] "blue"  "green" "red"  
  1. Given a numeric vector “vec_bonus = c(10,20,30,40,50)”, write a code snippet to :

    vec_bonus = c(10,20,30,40,50)

    1. Extract all elements greater than 25.

    vec_bonus[vec_bonus >= 25]
    [1] 30 40 50

    2. Calculate the mean of the extracted elements.

    mean(vec_bonus)
    [1] 30

16. Given the following vectors:

weights <- c(55, 68, 72, 61, 58, 75, 64, 70)
names <- c("Alice", "Bob", "Charlie", "Daisy", "Eve", "Frank", "Grace", "Henry")
  1. Identify the names of individuals whose weight is greater than 65kg.
names[weights > 65]
[1] "Bob"     "Charlie" "Frank"   "Henry"  

b. Find the average weight of individual weighting less than or equal to 60kg.

mean(weights[weights <= 60])
[1] 56.5

c. Extract the weights of individuals whose names start with letter ‘A’ or ‘D’.

weights[substr(names, 1, 1) %in% c("A", "D")]
[1] 55 61

d. Determine the number of individuals whose weight is between 60kg and 70kg (inclusive)

length(weights[weights>=60 & weights<=70])
[1] 4

You might find functions like mean(), substr(), and length() useful.

17. Give the following vector of daily temperatures (in Celcius) for a week.

temperatures <- c(22,25,19,21,18,24,23)
days <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday")

a. Identify the days when the temperatures was below 20’C.

days[temperatures < 20 ]
[1] "Wednesday" "Friday"   

b. Calculate the difference between the highest and lowest temperatures of the week.

max(temperatures) - min(temperatures)
[1] 7

c. Determine the number of days when the temperature was between 20’C and 24’C (inclusive)

sum(temperatures>=20 & temperatures<=24)
[1] 4
  1. Given the following vector of exam scores:

    scores <- c(85,78,92,65,88,70,95,80,60,90)
    students <- c("Anna", "Ben", "Cara", "Dan", "Ella", "Finn", "Grace", "Hank", "Ivy", "Jennie")

a. Identify the students who scores above 90.

students[scores > 90]
[1] "Cara"  "Grace"

b. Find the average score of students who scored below 80.

mean(scores[scores < 80])
[1] 68.25

c. Extract the scores of students whose names start with a vowel (A, E, I, O, U).

scores[substr(students, 1, 1) %in% c("A", "E", "I", "O", "U")]
[1] 85 88 60

Take Home Exercise

  1. Basic Vector Creation: Create a numeric vector containing the numbers from 10 to 20 and a character vector containing the days of the week. Display both vectors.

    numeric_vector <- 10:20
    numeric_vector
     [1] 10 11 12 13 14 15 16 17 18 19 20
    character_vector <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday")
    character_vector
    [1] "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"    "Saturday" 
    [7] "Sunday"   
  2. Vector Concatenation: Given two vectors:

    a <- c(1,2,3)

and

b <- c(4,5,6)

, concatenate them to form a single vector.

concatenate_vector <- c(a,b)
concatenate_vector
[1] 1 2 3 4 5 6
  1. Element Extraction: Given the vector

    temperatures <- c(15, 18, 20, 22, 19, 17, 16)

, extract the temperatures for the 2nd, 4th, and 6th days.

temperatures[c(2,4,6)]
[1] 18 22 17
  1. Omitting Elements: From the same temperatures vector, omit the temperatures of the 5th day.

    temperatures[-5]
    [1] 15 18 20 22 17 16
  2. Vector Arithmetic: Given the vector

    prices <- c(10, 20, 30, 40, 50)

, calculate the new prices after a 10% discount.

new_prices <- prices*0.9
new_prices
[1]  9 18 27 36 45
  1. Patterned Vectors: Create a vector that contains the numbers from 5 to 50, but only includes every 5th number (i.e., 5, 10, 15, …).

    seq(5, 50, by=5)
     [1]  5 10 15 20 25 30 35 40 45 50
  2. Random Patterns: Simulate the results of rolling a 6-sided die 10 times.

    sample(1:6, size = 10, replace = TRUE)
     [1] 2 4 1 4 1 3 5 3 4 4
  3. Character Vector Operations: Given the vector

    fruits <- c("apple", "banana", "cherry")

, extract the first tree letters of each fruit.

substr(fruits, 1, 3)
[1] "app" "ban" "che"
  1. Logical Vector Filtering: Given the vector

    ages <- c(25, 30, 35, 40, 45, 50)

, identify which ages are greater than 30 and less than 50.

ages[ages>=30 & ages<=50]
[1] 30 35 40 45 50
  1. Relational Operators with Vectors: Given two vectors:

    vector1 <- c(5, 10, 15)

and

vector2 <- c(10, 10, 20)

, determine which elements of vector1 are less than or equal to the corresponding elements in vector2.

vector1 <- c(5, 10, 15)
vector2 <- c(10, 10, 20)
compare <- vector1 <= vector2
compare
[1] TRUE TRUE TRUE