RPubs will retire in June 2027. Your existing documents will stay accessible through December 31, 2031
and Connect Cloud is the recommended home for new publishing. Read the blog post

Recently Published

Análisis Integral de un Ensayo Clínico Simulado con {biostats}
Se presenta un flujo analítico completo utilizando el paquete {biostats}, aplicado sobre un conjunto de datos clínicos simulados. Se incluyen tablas de línea base, comparaciones entre grupos, análisis longitudinal, pruebas de supuestos, medidas de efecto epidemiológico, visualizaciones estandarizadas y cálculos de tamaño de muestra. El objetivo es mostrar cómo {biostats} optimiza, estandariza y acelera procesos estadísticos comúnmente empleados en ensayos clínicos, manteniendo reproducibilidad y rigor metodológico.
Statistical Modeling I Portfolio
Auto datset
Final Project
Comparison of Red Maple and Sugar Maple to investigate if the Red Maple has muted dynamics.
FELIPE
BASE DE DATOS Y DESCRIPTIVAS
Midterm Covid Sentiment
--- title: "U.S. COVID-19 Sentiment Timeline" output: html_document --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = FALSE, message = FALSE, warning = FALSE) library(dplyr) library(ggplot2) library(lubridate) library(crosstalk) library(plotly) library(DT) set.seed(123) ``` ```{r load_and_prepare} # Load data ------------------------------------------------------------- # If the CSV is on your Desktop: sent <- read.csv("~/Desktop/usa_covid_2020_2022.csv", stringsAsFactors = FALSE) # If it's in the project folder instead, use: # sent <- read.csv("usa_covid_2020_2022.csv", stringsAsFactors = FALSE) sent$Date <- as.Date(sent$Date) sent <- sent[order(sent$Date), ] sent <- sent %>% mutate( Year = year(Date), Month = month(Date), YearMonth = format(Date, "%Y-%m") ) # Theme tagging --------------------------------------------------------- assign_theme <- function(text) { txt <- tolower(text) if (grepl("vaccine|vaccination|shot|booster|dose|warp speed", txt)) { "Vaccines & Boosters" } else if (grepl("lockdown|stay-at-home|shutdown|restrictions|social distancing|face covering|mask", txt)) { "Restrictions & Reopening" } else if (grepl("delta|omicron|variant|ba\\.5|ba5", txt)) { "Variants" } else if (grepl("economy|economic|jobs|unemployment|market|business|stimulus|checks|rescue plan|relief", txt)) { "Economy & Relief" } else if (grepl("school|schools|students|classroom|kids", txt)) { "Schools & Education" } else if (grepl("misinformation|disinformation|false information|myths|rumors", txt)) { "Misinformation & Communication" } else { "General Pandemic Response" } } sent$Theme <- vapply(sent$Summary, assign_theme, character(1)) # Stopword lists for word scrambles ------------------------------------- stopwords_simple <- c( "the","and","to","of","in","a","for","on","as","is","are","this","that", "with","be","from","at","it","by","an","into","about","has","have","will", "was","were","but","more","many","most","less","very","their","his","her", "its","our","us","we","they","over","again","now","than","still","even" ) stopwords_domain <- c( "covid","coronavirus","pandemic","virus","viruses", "case","cases","death","deaths", "vaccine","vaccines","shot","shots", "lockdown","lockdowns","restrictions","guidelines", "americans","american","people","country", "united","states","state","u","s","us","u.s", "economy","economic","hospital","hospitals" ) make_scramble <- function(text) { clean <- gsub("[^A-Za-z ]", " ", tolower(text)) words <- unlist(strsplit(clean, "\\s+")) words <- words[ words != "" & !(words %in% c(stopwords_simple, stopwords_domain)) & nchar(words) >= 5 ] if (length(words) == 0) return("") unique_words <- unique(words) paste(sample(unique_words, min(5, length(unique_words))), collapse = " ") } # Monthly aggregates ----------------------------------------------------- monthly_info <- sent %>% group_by(YearMonth) %>% summarize( MonthStart = min(Date), AvgSentiment = mean(SentimentScore), HoverText = paste(Summary, collapse = "<br>• "), MonthScramble = make_scramble(paste(Summary, collapse = " ")), .groups = "drop" ) %>% mutate( SentSign = ifelse(AvgSentiment > 0, "Positive", "Negative/Neutral") ) # Join month scramble back to row level --------------------------------- sent <- sent %>% left_join(monthly_info %>% select(YearMonth, MonthScramble), by = "YearMonth") # Theme-level summary --------------------------------------------------- theme_summary <- sent %>% group_by(Theme) %>% summarize( AvgSentiment = mean(SentimentScore), Count = n(), .groups = "drop" ) %>% mutate( SentSign = ifelse(AvgSentiment > 0, "Positive", "Negative/Neutral") ) ``` ```{r monthly_interactive} plot_ly( monthly_info, x = ~MonthStart, y = ~AvgSentiment, type = "scatter", mode = "lines+markers", color = ~SentSign, colors = c("Negative/Neutral" = "#d95f02", "Positive" = "#1b9e77"), text = ~paste0( "<b>", YearMonth, "</b><br>", "Average Sentiment: ", round(AvgSentiment, 3), "<br>", "Category: ", SentSign, "<br><br>", "<b>Summaries:</b><br>• ", HoverText ), hoverinfo = "text" ) %>% layout( title = "Monthly Average Sentiment (Color-Coded by Positive vs Negative)", xaxis = list(title = "Month"), yaxis = list(title = "Average Sentiment Score (-1 to +1)") ) ``` ```{r theme_chart} ggplot( theme_summary, aes(x = reorder(Theme, AvgSentiment), y = AvgSentiment, fill = SentSign) ) + geom_col(width = 0.6) + geom_hline(yintercept = 0, linetype = "dashed") + coord_flip() + scale_fill_manual( values = c("Negative/Neutral" = "#d95f02", "Positive" = "#1b9e77"), name = "Average Sentiment" ) + theme_minimal(base_size = 13) + labs( title = "Average Sentiment by Theme", x = "Theme", y = "Average Sentiment Score (-1 to +1)" ) ``` ```{r interactive_timeline} shared_sent <- SharedData$new(sent, key = ~Date, group = "covid") filter_date <- filter_slider( id = "date_filter", label = "Date Range", sharedData = shared_sent, column = ~Date ) filter_score <- filter_slider( id = "score_filter", label = "Sentiment Score", sharedData = shared_sent, column = ~SentimentScore, step = 0.05 ) filter_month <- filter_select( id = "month_filter", label = "Month", sharedData = shared_sent, group = ~YearMonth ) timeline_plot <- plot_ly( shared_sent, x = ~Date, y = ~SentimentScore, type = "scatter", mode = "lines+markers", text = ~paste0( "Date: ", Date, "<br>", "Sentiment: ", SentimentScore, "<br>", "Theme: ", Theme, "<br><br>", Summary ), hoverinfo = "text" ) %>% layout( title = "Daily Sentiment Timeline", xaxis = list(title = "Date"), yaxis = list(title = "Sentiment Score (-1 to +1)") ) bscols( widths = c(3, 9), list(filter_date, filter_score, filter_month), timeline_plot ) ``` ```{r word_scramble_table} table_data <- sent %>% select(Date, SentimentScore, YearMonth, MonthScramble, Theme, Summary) shared_table <- SharedData$new(table_data, key = ~Date, group = "covid") datatable( shared_table, options = list(pageLength = 5, lengthChange = FALSE), colnames = c( "Date", "Sentiment", "Month", "Word Scramble", "Theme", "Summary" ), rownames = FALSE ) ```
Practical R 3
Blah
Statistical Modeling I Portfolio
Auto dataset
TheSportPsychShow
A quick guide for finding similar episodes of interest.
broadband_housing_project
Brad Band penetration map by county and year.
Prova Final
Prova Final - Disciplina Visualização de Dados