R

PROGRAM 1

csv_data <- read.csv("Y:\\program.csv")

print(csv_data)

summary(csv_data)

csv_data$rowSums <- rowSums (csv_data [, c ("mark1", "mark2", "mark3")], na.rm = TRUE)

print (csv_data [, c ("NAME", "subject", "rowSums")])

csv_data$rowMeans <- rowMeans (csv_data [, c ("mark1","mark2", "mark3")], na.rm = TRUE)

print (csv_data [, c ("NAME", "subject", "rowMeans")])

csv_data$maxMarks <- apply (csv_data [, c ("mark1", "mark2", "mark3")], 1, max, na.rm = TRUE)

print (csv_data [, c ("NAME", "subject", "maxMarks")])

csv_data$minMarks <- apply (csv_data [, c ("mark1", "mark2", "mark3")], 1, min, na.rm = TRUE)

print (csv_data [, c ("NAME", "subject”, "minMarks")])

csv_data$meanMarks <- rowMeans (csv_data [, c ("mark1", "mark2", "mark3")], na.rm = TRUE)

print (csv_data [, c ("NAME", "subject", "meanMarks")])

csv_data$medianMarks <- apply (csv_data [, c ("mark1", "mark2", "mark3")], 1, median, na.rm = TRUE)

print (csv_data [, c ("NAME", "subject", "medianMarks")])

csv_data$productMarks <- apply (csv_data [, c ("mark1", "mark2", "mark3")], 1, prod, na.rm = TRUE)

print (csv_data [, c ("NAME", "subject", "productMarks")])

 

csv_data$sdMarks <- apply (csv_data [, c ("mark1", "mark2", "mark3")], 1, sd, na.rm = TRUE)

print (csv_data [, c ("NAME", "subject", "sdMarks")])

csv_data$varianceMarks <- apply (csv_data [, c ("mark1", "mark2", "mark3")], 1, var, na.rm = TRUE)

print (csv_data [, c ("NAME", "subject”, varianceMarks")])

csv_data$rangeMarks <- apply (csv_data [, c ("mark1", "mark2", "mark3")], 1, function(x) diff (range (x, na.rm = TRUE)))

print (csv_data [, c ("NAME", "subject", "rangeMarks")])

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PROGRAM 2

data <- read.csv ("Y:\\R PROGRAMMING\\pg2.csv")

numerical_cols <- sapply (data, is. numeric)

categorical_cols <- sapply (data, is. factor)

get_mode <- function(v) {

  uniqv <- unique(v)

  uniqv [which.max (tabulate (match (v, uniqv)))]

}

for (col in names(data)[numerical_cols])

{

  mean_val <- mean(data[[col]], na.rm = TRUE)

  median_val <- median(data[[col]], na.rm = TRUE)

  mode_val <- get_mode(data[[col]])

  total_val <- sum(data[[col]], na.rm = TRUE)

  print (paste ("Statistics for", col, ":"))

  print (paste ("Mean:", mean_val))

  print (paste ("Median:", median_val))

  print (paste ("Mode:", mode_val))

  print (paste ("Total:", total_val))

  hist (data[[col]], main = paste ("Histogram of", col),

       xlab = col, col = "lightblue", border = "black")

}

for (col in names(data)[numerical_cols])

{

  barplot (data[[col]], main = paste ("Bar Plot of", col),

          xlab = col, col = "lightblue", border = "black")

}

if (sum(numerical_cols) > 1) {

  combs <- combn(names(data)[numerical_cols], 2, simplify = FALSE)

  for (pair in combs) {

    plot (data [[pair [1]]], data [[pair [2]]], main = paste ("Scatter Plot of", pair [1], "vs", pair [2]),

         xlab = pair [1], ylab = pair [2], col = "blue", pch = 19)

  }

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PROGRAM 3

calculate <- function (a, b, operator)

{

result <- switch (operator, "+" = a + b, "-" = a - b,"*" = a * b, "/" = if (b! = 0) a / b else "Division by zero is not allowed","%%" = a %% b, "^" = a ^ b,"sqrt" = sqrt(a), "sin" = sin(a), "cos" = cos(a),"tan" = tan(a),"Invalid operator")

return(result)

}

operator <- readline (prompt = "Enter the operator (+, -, *, /, %%, ^, sqrt, sin, cos, tan): ")

if (operator %in% c ("sqrt", "sin", "cos", "tan")) {

  a <- as. Numeric (readline (prompt = "Enter the number: "))

  b <- NA 

} else {

 a <- as. Numeric (readline (prompt = "Enter the first number: "))

  b <- as. Numeric (readline (prompt = "Enter the second number: "))

}

result <- calculate (a, b, operator)

cat ("Result: ", result, "\n")

 

 

 

 

 

 

 

PROGRAM 4

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

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

cat ("Matrix 1: \n")

print(matrix1)

cat ("\nMatrix 2: \n")

print(matrix2) 

cat ("\nMatrix Addition (Matrix 1 + Matrix 2): \n")

matrix_add <- matrix1 + matrix2

print(matrix_add)

cat ("\nMatrix Subtraction (Matrix 1 - Matrix 2): \n")

matrix_sub <- matrix1 - matrix2

print(matrix_sub)

cat ("\nMatrix Element-wise Multiplication (Matrix 1 * Matrix 2): \n")

matrix_mult <- matrix1 * matrix2

print(matrix_mult)

cat ("\nMatrix Multiplication (Matrix 1 %*% Matrix 2): \n")

matrix_mult_dot <- matrix1 %*% t(matrix2)

print(matrix_mult_dot)

cat ("\nTranspose of Matrix 1: \n")

matrix_transpose <- t(matrix1)

print(matrix_transpose)

 

 

PROGRAM 5

csv_data <- read.csv ("Y:\\R PROGRAMMING\\PGM5.csv")

cat ("Structure of the DataFrame:\n")

print(str(csv_data))

cat ("\nSummary Statistics:\n")

print(summary(csv_data))

filtered_data <- csv_data [csv_data$Tamil > 50,]

cat ("\nFiltered Data (Tamil > 50): \n")

print(filtered_data)

csv_data$Maths <- csv_data$Maths + 10

cat ("\nData with New Column 'Maths’: \n")

print(csv_data)

mean_Social <- mean(csv_data$Social)

cat ("\nMean of 'Social’: \n")

print(mean_Social)

median_English <- median(csv_data$English)

cat ("\nMedian of 'mark2’: \n")

print(median_English)

#mode <- function(marks) {

#  uniq <- unique(marks)

#  uniq [which.max (tabulate (match (marks, uniq)))]

#}

csv_data$total <- rowSums (csv_data [, c ("Tamil", "English”, “Maths", "Science”, “Social")])

csv_data$Average <- csv_data$total/5

cat ("\nDataFrame with New Columns:\n")

print(csv_data)

write.csv (csv_data, "Y:\\pg5_updated.csv", row.names = FALSE)

cat ("Updated CSV file saved to Y:\\pg5_updated.csv\n")

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PROGRAM 6

player_scores <- matrix (nrow = 5, ncol = 3)

rownames(player_scores) <- paste ("Player", 1:5)

for (i in 1:5)

  {

  for (j in 1:3)

    {

    player_scores [i, j] <- as. numeric (readline (prompt = paste ("Enter score for", rownames(player_scores) [i], "in match", j, ": ")))

  }

}

print ("Player Scores Matrix:")

print(player_scores)

compare_performance <- function(scores) {

  improvement_results <- matrix (nrow = 5, ncol = 2)

  colnames(improvement_results) <- c ("Player", "Improved Performance")

  improvement_results[, 1] <- rownames(scores)

  for (i in 1: nrow(scores)) {

    improved_count <- 0

    for (j in 1:(ncol(scores) - 1)) {

      if (scores [i, j + 1] > scores [i, j]) {

        improved_count <- improved_count + 1

      }

    }

    if (improved_count > 0) {

      improvement_results [i, 2] <- paste (improved_count, "improvement(s)")

    } else {

      improvement_results [i, 2] <- "No Improvement"

    }

  }

  return(improvement_results)

}

improvement_results <- compare_performance(player_scores)

print ("Player Performance Improvement Results:")

print(improvement_results)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PROGRAM 7

calculate_weekly_pay <- function (hourly_wage, regular_hours, overtime_hours)

{

  regular_pay <- hourly_wage * regular_hours

  overtime_pay <- hourly_wage * 1.5 * overtime_hours

  total_pay <- regular_pay + overtime_pay

  return(total_pay)

}

main <- function ()

{

  num_employees <- 05

  employee_data <- list ()

  for (i in 1:num_employees) {

    cat (paste ("Enter details for Employee", i, “: \n"))

    hourly_wage <- as. numeric (readline (prompt = "Hourly wage: "))

    regular_hours <- as. numeric (readline (prompt = "Regular hours worked: "))

    overtime_hours <- as. numeric (readline (prompt = "Overtime hours worked: "))

    weekly_pay <- calculate_weekly_pay (hourly_wage, regular_hours, overtime_hours)

    employee_data[[i]] <- list (

      hourly_wage = hourly_wage,

      regular_hours = regular_hours,

      overtime_hours = overtime_hours,

      weekly_pay = weekly_pay)

}

  cat ("\nEmployee Details and Weekly Pay:\n")

  for (i in 1:num_employees)

{

    cat (paste ("Employee", i, “: \n"))

    cat (paste ("Hourly Wage: $", format(employee_data[[i]] $hourly_wage, nsmall = 2), "\n", sep = ""))

    cat (paste ("Regular Hours: ", employee_data[[i]] $regular_hours, "\n", sep = ""))

    cat (paste ("Overtime Hours: ", employee_data[[i]] $overtime_hours, "\n", sep = ""))

    cat (paste ("Weekly Pay: $", format(employee_data[[i]] $weekly_pay, nsmall = 2), "\n", sep = ""))

    cat("\n")

}

  total_payroll <- sum (sapply (employee_data, function(emp) emp$weekly_pay))

  cat (paste ("Total Payroll for", num_employees, "employees: $", format (total_payroll, nsmall = 2), "\n", sep = ""))

}

main ()

 

 

 

 

 

 

 

 

PROGRAM 8

fibonacci <- function(n) {

  fib_series <- numeric(n)

  fib_series [1] <- 0

  if (n > 1) {

    fib_series [2] <- 1

    for (i in 3: n) {

      fib_series[i] <- fib_series[i-1] + fib_series[i-2]

    }

  }

  return(fib_series)

}

factorial <- function(n) {

  if (n == 0) {

    return (1)

  } else {

    return (n * factorial (n - 1))

  }

}

gcd <- function (a, b) {

  if (b == 0) {

    return(a)

  } else {

    return (gcd (b, a %% b))

  }

}

main <- function () {

  repeat {

    cat ("\nSelect an option:\n")

    cat ("1: Calculate Fibonacci series\n")

    cat ("2: Calculate factorial of a number\n")

    cat ("3: Calculate GCD of two numbers\n")

    cat ("4: Exit\n")

        choice <- as. integer (readline (prompt="Enter your choice: "))

    if (choice == 1) {

      n <- as. integer (readline (prompt="Enter the number of terms for Fibonacci series: "))

      if (n > 0) {

        fib_series <- fibonacci(n)

        cat ("Fibonacci series:", fib_series, "\n")

      } else {

        cat ("Please enter a positive integer.\n")

      }

    }

else if (choice == 2) {

      num <- as. integer (readline (prompt="Enter a number to calculate its factorial: "))

      if (num >= 0) {

        fact <- factorial(num)

        cat ("Factorial of", num, "is", fact, "\n")

      }

else

{

        cat ("Please enter a non-negative integer.\n")

}         

}

else if (choice == 3) {

      a <- as. integer (readline (prompt="Enter the first number for GCD calculation: "))

      b <- as. integer (readline (prompt="Enter the second number for GCD calculation: "))

      gcd_result <- gcd (a, b)

      cat ("GCD of", a, "and", b, "is", gcd_result, "\n")

    } else if (choice == 4) {

      cat ("Exiting the program.\n")

      break  

    } else {

      cat ("Invalid choice. Please try again.\n")

    }

  }

}

main ()

 

 

 

 

 

PROGRAM 9

A)
data <- data. frame (Student = c ("Student1", "Student2", "Student3", "Student4"), Math = c (85, 78, 92, 88), Science = c (90, 85, 95, 89), English = c (88, 82, 90, 85), History = c (76, 80, 85, 83))

par (mar = c (5, 4, 4, 8) + 0.1)

data_t <- t(data[,-1])
colnames(data_t) <- data$Student
barplot(data_t, beside = FALSE, col = c("sky blue", "light green", "orange", "pink"), legend = rownames(data_t), args.legend = list(x = "topright", inset = c(-0.2, 0)))
title(main = "Marks Obtained by Students in Different Subjects")
title(xlab = "Students")
title(ylab = "Marks")
total_marks <- colSums(data[,-1])
subject_names <- names(total_marks)
par(mar = c(5, 4, 4, 8) + 0.1) # Adjust margins to fit the legend
pie(total_marks, labels = subject_names, col = c("skyblue", "light green", "orange", "pink"), main = "Total Marks Obtained in Each Subject")


B)
data <- data.frame( Day = c("Day1", "Day2", "Day3", "Day4", "Day5"), Temperature = c(30, 32, 28, 31, 29 ), Rainfall = c(5, 10, 0, 15, 7))
par(mfrow = c(2, 1))  
barplot(data$Temperature, names.arg = data$Day, col = "skyblue", main = "Temperature for Five Consecutive Days", xlab = "Days", ylab = "Temperature (°C)")
barplot(data$Rainfall, names.arg = data$Day, col = "light green", main = "Rainfall for Five Consecutive Days", xlab = "Days", ylab = "Rainfall (mm)")
par(mfrow = c(1, 1))

C)
set.seed(123)

data <- data.frame(
  Gender = sample(c("Male", "Female"), 100, replace = TRUE),
  Height = rnorm(100, mean = 170, sd = 10))
mean_height <- mean(data$Height)
par(mar = c(5, 4, 4, 2) + 0.1)  
plot(density(data$Height), main = "Density Plot of Heights", xlab = "Height (cm)", ylab = "Density", col = "blue")
abline(v = mean_height, col = "red", lwd = 2, lty = 2)  # Red dashed line for mean height
legend("topright", legend = paste("Mean Height =", round(mean_height, 2)), col = "red", lwd = 2, lty = 2)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PROGRAM 10

data(mtcars)
model <- lm(mpg ~ wt, data = mtcars)
summary(model)
predicted_values <- predict(model, mtcars)
actual_values <- mtcars$mpg
residuals <- actual_values - predicted_values
mse <- mean(residuals^2)
print(paste("Mean Squared Error (MSE):", round(mse, 2)))
rmse <- sqrt(mse)
print(paste("Root Mean Squared Error (RMSE):", round(rmse, 2)))
mae <- mean(abs(residuals))
print(paste("Mean Absolute Error (MAE):", round(mae, 2)))
r_squared <- summary(model)$r.squared
print(paste("R-squared:", round(r_squared, 2)))
adj_r_squared <- summary(model)$adj.r.squared
print(paste("Adjusted R-squared:", round(adj_r_squared, 2)))
plot(mtcars$wt, mtcars$mpg, main = "Linear Regression of mpg on wt", xlab = "Weight (1000 lbs)", ylab = "Miles Per Gallon (mpg)")
abline(model, col = "red")

 

 

 

 

 

 

 

 

 

 

PROGRAM 9

# Function to perform Part A

part_a <- function() {

  data <- data.frame(

    Student = c("Student1", "Student2", "Student3", "Student4"),

    Math = c(85, 78, 92, 88),

    Science = c(90, 85, 95, 89),

    English = c(88, 82, 90, 85),

    History = c(76, 80, 85, 83)

  )

  par(mar = c(5, 4, 4, 8) + 0.1)

  data_t <- t(data[,-1])

  colnames(data_t) <- data$Student

  barplot(data_t, beside = FALSE, col = c("sky blue", "light green", "orange", "pink"), legend = rownames(data_t), args.legend = list(x = "topright", inset = c(-0.2, 0)))

  title(main = "Marks Obtained by Students in Different Subjects")

  title(xlab = "Students")

  title(ylab = "Marks")

  total_marks <- colSums(data[,-1])

  pie(total_marks, labels = names(total_marks), col = c("skyblue", "light green", "orange", "pink"), main = "Total Marks Obtained in Each Subject")

  # Print a message to indicate that the plot has been generated

  cat("Plot generated for Part A.\n")

}

 

# Function to perform Part B

part_b <- function() {

  data <- data.frame(

    Day = c("Day1", "Day2", "Day3", "Day4", "Day5"),

    Temperature = c(30, 32, 28, 31, 29),

    Rainfall = c(5, 10, 0, 15, 7)

  )

    par(mfrow = c(2, 1))

  barplot(data$Temperature, names.arg = data$Day, col = "skyblue", main = "Temperature for Five Consecutive Days", xlab = "Days", ylab = "Temperature (°C)")

  barplot(data$Rainfall, names.arg = data$Day, col = "light green", main = "Rainfall for Five Consecutive Days", xlab = "Days", ylab = "Rainfall (mm)")

  par(mfrow = c(1, 1))

    # Print a message to indicate that the plot has been generated

  cat("Plot generated for Part B.\n")

}

# Function to perform Part C

part_c <- function() {

  set.seed(123)

  data <- data.frame(

    Gender = sample(c("Male", "Female"), 100, replace = TRUE),

    Height = rnorm(100, mean = 170, sd = 10)

  )

    mean_height <- mean(data$Height)

  par(mar = c(5, 4, 4, 2) + 0.1)

  plot(density(data$Height), main = "Density Plot of Heights", xlab = "Height (cm)", ylab = "Density", col = "blue")

  abline(v = mean_height, col = "red", lwd = 2, lty = 2)

  legend("topright", legend = paste("Mean Height =", round(mean_height, 2)), col = "red", lwd = 2, lty = 2)

    # Print a message to indicate that the plot has been generated

  cat("Plot generated for Part C.\n")

}

# User choice

choice <- readline(prompt = "Enter your choice (A, B, or C): ")

if (choice == "A") {

  part_a()

} else if (choice == "B") {

  part_b()

} else if (choice == "C") {

  part_c()

} else {

  cat("Invalid choice. Please enter A, B, or C.\n")

}

Popular posts from this blog

Python programs

ARD