install.packages("survival")
Installing package into ‘/cloud/lib/x86_64-pc-linux-gnu-library/4.4’
(as ‘lib’ is unspecified)
trying URL 'http://rspm/default/__linux__/focal/latest/src/contrib/survival_3.8-3.tar.gz'
Content type 'application/x-gzip' length 8691784 bytes (8.3 MB)
==================================================
downloaded 8.3 MB

* installing *binary* package ‘survival’ ...
* DONE (survival)

The downloaded source packages are in
    ‘/tmp/Rtmps8Lq3z/downloaded_packages’
install.packages("tidyverse")
Error in install.packages : Updating loaded packages
library(survival)

Attaching package: ‘survival’

The following object is masked _by_ ‘.GlobalEnv’:

    heart
library(tidyverse) # Load the tidyverse package for data manipulation and visualization
── Attaching core tidyverse packages ───────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.5.2     ✔ tibble    3.2.1
✔ lubridate 1.9.4     ✔ tidyr     1.3.1
✔ purrr     1.0.4     
── Conflicts ─────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors
library(ggplot2) # Load ggplot2 for creating plots

# Load the mtcars dataset (built into R)
data_heart <- heart

# View the first few rows to understand the data
head(data_heart)
# Convert 'age' to a factor (if needed)
heart$age <- as.factor(heart$age)  # Converts the 'age' column to a factor

# Convert 'surgery' (transplant) to a factor (assuming it's named 'surgery')
heart$surgery <- as.factor(heart$surgery)  # Converts the 'surgery' column to a factor
# Create a scatter plot of age vs start, colored by surgery (transplant)
ggplot(heart, aes(x = age, y = start, color = surgery)) +
  geom_point() +  # Add points to the plot
  labs(title = "Age vs Start", x = "Age", y = "Start")  # Add plot labels

NA
NA
# Add index column to the 'heart' dataset for ordered plotting
heart_line <- heart %>% mutate(index = row_number())  # Add an index column

# Create a line graph of age (or any other variable) by row number
ggplot(heart_line, aes(x = index, y = age)) +  # Replace 'age' with the variable you want to plot
  geom_line() +  # Add a line to the plot
  labs(title = "Age by Index", x = "Index", y = "Age")  # Add plot labels

# Calculate average cholesterol level grouped by surgery status
chol_by_surgery <- heart %>% group_by(surgery) %>% summarize(avg_chol = mean(chol, na.rm = TRUE))  # Calculate average cholesterol for each surgery group
Warning: There were 2 warnings in `summarize()`.
The first warning was:
ℹ In argument: `avg_chol = mean(chol, na.rm = TRUE)`.
ℹ In group 1: `surgery = 0`.
Caused by warning in `mean.default()`:
! argument is not numeric or logical: returning NA
ℹ Run ]8;;ide:run:dplyr::last_dplyr_warnings()dplyr::last_dplyr_warnings()]8;; to see the 1 remaining
  warning.
# Create a horizontal bar chart
ggplot(chol_by_surgery, aes(y = surgery, x = avg_chol)) +
  geom_bar(stat = 'identity') +  # Create bars based on the calculated averages
  labs(title = "Average Cholesterol by Surgery Status", y = "Surgery Status", x = "Average Cholesterol Level")  # Add plot labels
Warning: Position guide is perpendicular to the intended axis.
ℹ Did you mean to specify a different guide `position`?
Warning: Removed 2 rows containing missing values or values outside the
scale range (`geom_bar()`).

# Calculate the average for start and end grouped by surgery status
bar_data_heart <- heart %>% group_by(surgery) %>% 
  summarize(start = mean(start, na.rm = TRUE), 
            end = mean(end, na.rm = TRUE)) %>%
  pivot_longer(cols = c("start", "end"), names_to = "Measurement", values_to = "Average")  # Pivot to long format
Warning: There were 2 warnings in `summarize()`.
The first warning was:
ℹ In argument: `end = mean(end, na.rm = TRUE)`.
ℹ In group 1: `surgery = 0`.
Caused by warning in `mean.default()`:
! argument is not numeric or logical: returning NA
ℹ Run ]8;;ide:run:dplyr::last_dplyr_warnings()dplyr::last_dplyr_warnings()]8;; to see the 1 remaining
  warning.
# Create a stacked bar chart
ggplot(bar_data_heart, aes(x = surgery, fill = Measurement, y = Average)) +
  geom_bar(stat = "identity") +  # Create bars based on the calculated averages
  labs(title = "Average Measurements by Surgery Status", x = "Surgery Status", y = "Average Measurement")  # Add plot labels
Warning: Removed 2 rows containing missing values or values outside the
scale range (`geom_bar()`).

LS0tCnRpdGxlOiAiYWN0MyIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKCgoKCmBgYHtyfQppbnN0YWxsLnBhY2thZ2VzKCJzdXJ2aXZhbCIpCmBgYAoKCmBgYHtyfQppbnN0YWxsLnBhY2thZ2VzKCJ0aWR5dmVyc2UiKQpgYGAKCgoKCmBgYHtyfQpsaWJyYXJ5KHN1cnZpdmFsKQpgYGAKCgoKYGBge3J9CmxpYnJhcnkodGlkeXZlcnNlKSAjIExvYWQgdGhlIHRpZHl2ZXJzZSBwYWNrYWdlIGZvciBkYXRhIG1hbmlwdWxhdGlvbiBhbmQgdmlzdWFsaXphdGlvbgpsaWJyYXJ5KGdncGxvdDIpICMgTG9hZCBnZ3Bsb3QyIGZvciBjcmVhdGluZyBwbG90cwoKIyBMb2FkIHRoZSBtdGNhcnMgZGF0YXNldCAoYnVpbHQgaW50byBSKQpkYXRhX2hlYXJ0IDwtIGhlYXJ0CgojIFZpZXcgdGhlIGZpcnN0IGZldyByb3dzIHRvIHVuZGVyc3RhbmQgdGhlIGRhdGEKaGVhZChkYXRhX2hlYXJ0KQpgYGAKYGBge3J9CiMgQ29udmVydCAnYWdlJyB0byBhIGZhY3RvciAoaWYgbmVlZGVkKQpoZWFydCRhZ2UgPC0gYXMuZmFjdG9yKGhlYXJ0JGFnZSkgICMgQ29udmVydHMgdGhlICdhZ2UnIGNvbHVtbiB0byBhIGZhY3RvcgoKIyBDb252ZXJ0ICdzdXJnZXJ5JyAodHJhbnNwbGFudCkgdG8gYSBmYWN0b3IgKGFzc3VtaW5nIGl0J3MgbmFtZWQgJ3N1cmdlcnknKQpoZWFydCRzdXJnZXJ5IDwtIGFzLmZhY3RvcihoZWFydCRzdXJnZXJ5KSAgIyBDb252ZXJ0cyB0aGUgJ3N1cmdlcnknIGNvbHVtbiB0byBhIGZhY3RvcgoKCmBgYAogCgoKCmBgYHtyfQojIENyZWF0ZSBhIHNjYXR0ZXIgcGxvdCBvZiBhZ2UgdnMgc3RhcnQsIGNvbG9yZWQgYnkgc3VyZ2VyeSAodHJhbnNwbGFudCkKZ2dwbG90KGhlYXJ0LCBhZXMoeCA9IGFnZSwgeSA9IHN0YXJ0LCBjb2xvciA9IHN1cmdlcnkpKSArCiAgZ2VvbV9wb2ludCgpICsgICMgQWRkIHBvaW50cyB0byB0aGUgcGxvdAogIGxhYnModGl0bGUgPSAiQWdlIHZzIFN0YXJ0IiwgeCA9ICJBZ2UiLCB5ID0gIlN0YXJ0IikgICMgQWRkIHBsb3QgbGFiZWxzCgoKYGBgCgoKYGBge3J9CiMgQWRkIGluZGV4IGNvbHVtbiB0byB0aGUgJ2hlYXJ0JyBkYXRhc2V0IGZvciBvcmRlcmVkIHBsb3R0aW5nCmhlYXJ0X2xpbmUgPC0gaGVhcnQgJT4lIG11dGF0ZShpbmRleCA9IHJvd19udW1iZXIoKSkgICMgQWRkIGFuIGluZGV4IGNvbHVtbgoKIyBDcmVhdGUgYSBsaW5lIGdyYXBoIG9mIGFnZSAob3IgYW55IG90aGVyIHZhcmlhYmxlKSBieSByb3cgbnVtYmVyCmdncGxvdChoZWFydF9saW5lLCBhZXMoeCA9IGluZGV4LCB5ID0gYWdlKSkgKyAgIyBSZXBsYWNlICdhZ2UnIHdpdGggdGhlIHZhcmlhYmxlIHlvdSB3YW50IHRvIHBsb3QKICBnZW9tX2xpbmUoKSArICAjIEFkZCBhIGxpbmUgdG8gdGhlIHBsb3QKICBsYWJzKHRpdGxlID0gIkFnZSBieSBJbmRleCIsIHggPSAiSW5kZXgiLCB5ID0gIkFnZSIpICAjIEFkZCBwbG90IGxhYmVscwoKYGBgCmBgYHtyfQojIENhbGN1bGF0ZSBhdmVyYWdlIGNob2xlc3Rlcm9sIGxldmVsIGdyb3VwZWQgYnkgc3VyZ2VyeSBzdGF0dXMKY2hvbF9ieV9zdXJnZXJ5IDwtIGhlYXJ0ICU+JSBncm91cF9ieShzdXJnZXJ5KSAlPiUgc3VtbWFyaXplKGF2Z19jaG9sID0gbWVhbihjaG9sLCBuYS5ybSA9IFRSVUUpKSAgIyBDYWxjdWxhdGUgYXZlcmFnZSBjaG9sZXN0ZXJvbCBmb3IgZWFjaCBzdXJnZXJ5IGdyb3VwCgojIENyZWF0ZSBhIGhvcml6b250YWwgYmFyIGNoYXJ0CmdncGxvdChjaG9sX2J5X3N1cmdlcnksIGFlcyh5ID0gc3VyZ2VyeSwgeCA9IGF2Z19jaG9sKSkgKwogIGdlb21fYmFyKHN0YXQgPSAnaWRlbnRpdHknKSArICAjIENyZWF0ZSBiYXJzIGJhc2VkIG9uIHRoZSBjYWxjdWxhdGVkIGF2ZXJhZ2VzCiAgbGFicyh0aXRsZSA9ICJBdmVyYWdlIENob2xlc3Rlcm9sIGJ5IFN1cmdlcnkgU3RhdHVzIiwgeSA9ICJTdXJnZXJ5IFN0YXR1cyIsIHggPSAiQXZlcmFnZSBDaG9sZXN0ZXJvbCBMZXZlbCIpICAjIEFkZCBwbG90IGxhYmVscwoKYGBgCmBgYHtyfQojIENhbGN1bGF0ZSB0aGUgYXZlcmFnZSBmb3Igc3RhcnQgYW5kIGVuZCBncm91cGVkIGJ5IHN1cmdlcnkgc3RhdHVzCmJhcl9kYXRhX2hlYXJ0IDwtIGhlYXJ0ICU+JSBncm91cF9ieShzdXJnZXJ5KSAlPiUgCiAgc3VtbWFyaXplKHN0YXJ0ID0gbWVhbihzdGFydCwgbmEucm0gPSBUUlVFKSwgCiAgICAgICAgICAgIGVuZCA9IG1lYW4oZW5kLCBuYS5ybSA9IFRSVUUpKSAlPiUKICBwaXZvdF9sb25nZXIoY29scyA9IGMoInN0YXJ0IiwgImVuZCIpLCBuYW1lc190byA9ICJNZWFzdXJlbWVudCIsIHZhbHVlc190byA9ICJBdmVyYWdlIikgICMgUGl2b3QgdG8gbG9uZyBmb3JtYXQKCiMgQ3JlYXRlIGEgc3RhY2tlZCBiYXIgY2hhcnQKZ2dwbG90KGJhcl9kYXRhX2hlYXJ0LCBhZXMoeCA9IHN1cmdlcnksIGZpbGwgPSBNZWFzdXJlbWVudCwgeSA9IEF2ZXJhZ2UpKSArCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIpICsgICMgQ3JlYXRlIGJhcnMgYmFzZWQgb24gdGhlIGNhbGN1bGF0ZWQgYXZlcmFnZXMKICBsYWJzKHRpdGxlID0gIkF2ZXJhZ2UgTWVhc3VyZW1lbnRzIGJ5IFN1cmdlcnkgU3RhdHVzIiwgeCA9ICJTdXJnZXJ5IFN0YXR1cyIsIHkgPSAiQXZlcmFnZSBNZWFzdXJlbWVudCIpICAjIEFkZCBwbG90IGxhYmVscwoKYGBgCgo=