R PROGRAM

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