# Full Assignment - Life Expectancy Data Analysis

# Question 1: Load and Preprocess the Dataset

# Load the dataset
lifeData <- read.csv("Life Expectancy.csv", header = TRUE)

# Convert specific columns to factors
lifeData$Continent <- as.factor(lifeData$Continent)
lifeData$Hemisphere <- as.factor(lifeData$Hemisphere)
lifeData$Human.Development.Group <- as.factor(lifeData$Human.Development.Group)

# Display the dataset
head(lifeData)


# Question 2.2: Calculate Mean Life Expectancy by Continent for Selected Years

# Select columns for years divisible by 5
yearCols <- c("Life.Expectancy.at.Birth..1995.", 
              "Life.Expectancy.at.Birth..2000.", 
              "Life.Expectancy.at.Birth..2005.", 
              "Life.Expectancy.at.Birth..2010.", 
              "Life.Expectancy.at.Birth..2015.", 
              "Life.Expectancy.at.Birth..2020.")

# Filter data for selected columns
filteredData <- lifeData[, c("Continent", yearCols)]

# Calculate mean for rows and then group by continent
filteredData$MeanLife <- rowMeans(filteredData[, -1], na.rm = TRUE)
continentMeans <- tapply(filteredData$MeanLife, filteredData$Continent, mean, na.rm = TRUE)

# Display results
data.frame(Continent = names(continentMeans), MeanLifeExpectancy = continentMeans)


# Question 3: Correlation Between HDI Rank and Life Expectancy (2021)

# Extract columns
hdiRank <- lifeData$HDI.Rank..2021.
lifeExpectancy2021 <- lifeData$Life.Expectancy.at.Birth..2021.

# Remove NA values
validData <- !is.na(hdiRank) & !is.na(lifeExpectancy2021)
cor(hdiRank[validData], lifeExpectancy2021[validData])


# Question 4: Display Life Expectancy Trends for a Country

displayGraph <- function(country, startYear, endYear) {
  data <- lifeData[lifeData$Country == country, ]
  yearCols <- paste0("Life.Expectancy.at.Birth..", startYear:endYear, ".")
  years <- startYear:endYear
  values <- as.numeric(data[, yearCols])
  plot(years, values, type = "l", col = "blue",
       xlab = "Year", ylab = "Life Expectancy",
       main = paste("Trend for", country))
}

displayGraph("Australia", 1995, 2020)


# Question 5: Compare Life Expectancies for Multiple Countries

compareLifeExpectancies <- function(startYear, endYear, countries) {
  # Subset data for selected countries
  countryData <- lifeData[lifeData$Country %in% countries, ]
  
  # Create column names for the specified years
  yearColumns <- paste0("Life.Expectancy.at.Birth..", startYear:endYear, ".")
  
  # Prepare data for the first country
  years <- startYear:endYear
  firstCountryData <- as.numeric(countryData[1, yearColumns])
  
  # Plot the first country's data
  plot(years, firstCountryData, type = "l", col = "red", lwd = 2, 
       xlab = "Year", ylab = "Life Expectancy",
       main = "Life Expectancy Trends Across Countries")
  
  # Add lines for the remaining countries
  for (i in 2:nrow(countryData)) {
    lines(years, as.numeric(countryData[i, yearColumns]), col = i, lwd = 2)
  }
  
  # Add a legend
  legend("topright", legend = countries, col = 1:length(countries), lty = 1, lwd = 2)
}

# Example usage
compareLifeExpectancies(1995, 2015, c("India", "Brazil", "Australia", "Canada", "Japan", "South Africa"))


# Question 7: Perform t-test for Life Expectancy (1990 vs 2020)

life1990 <- as.numeric(lifeData$Life.Expectancy.at.Birth..1990.)
life2020 <- as.numeric(lifeData$Life.Expectancy.at.Birth..2020.)
tResult <- t.test(life1990, life2020)
print(tResult)


# Question 8: Perform ANOVA Test by Continent in 2010

life2010 <- as.numeric(lifeData$Life.Expectancy.at.Birth..2010.)
continent <- as.factor(lifeData$Continent)
result <- aov(life2010 ~ continent)
summary(result)