This analysis examines the language used in news headlines associated with Donald Trump. The dataset contains 54,686 news stories collected from MediaCloud’s United States - National collection between August 3, 2026, and October 4, 2026.
The purpose of this analysis is to identify the most frequently occurring meaningful words in the headlines and explore what these words suggest about major topics and themes connected to Trump in national news coverage.
The headlines were analyzed using unigram tokenization, which separates text into individual words. Common English stop words, social media artifacts, and additional terms that contribute little thematic meaning were removed.
Word frequencies were then calculated, and the 25 most frequently occurring remaining unigrams were visualized using a horizontal bar chart.
The following graph displays the 25 most frequently occurring meaningful unigrams in the collected news headlines.
The unigram analysis provides insight into the topics and themes most frequently associated with Donald Trump in national news headlines between August 3 and October 4, 2026.
The unigram analysis revealed several recurring themes in national news headlines associated with Donald Trump between August 3 and October 4, 2026. The most frequently occurring word was “Iran” (2,840 appearances), followed by “house” (2,768), “war” (2,170), and “court” (2,013). These results suggest that international conflict, domestic politics, and legal issues were prominent topics in headlines connected to Trump during this period.
Foreign policy and international relations appeared particularly significant, with words such as “Iran,” “war,” “oil,” “Canada,” and “military” appearing frequently. Political and electoral coverage was another major theme, demonstrated by words such as “GOP,” “Senate,” “Democrats,” “Republicans,” “midterm,” and “election.” Additionally, the frequency of “court,” “supreme,” and “judge” suggests considerable attention to judicial and legal matters.
Several words were intentionally excluded to improve the analysis. Common stop words were removed because they contribute little thematic meaning. I also excluded “Trump,” “Donald,” and “president” because the dataset already focused on stories mentioning Trump. Reporting terms such as “says,” “said,” “news,” and “latest” were removed because they describe how stories are presented rather than their subjects. These decisions allowed more specific topics to become visible in the results.
The findings also relate to framing and second-level agenda-setting theory. Repeated associations between Trump and topics such as international conflict, elections, and legal disputes may influence which issues audiences connect with his presidency. Although word frequency cannot establish the tone of coverage or prove audience effects, it provides insight into the subjects emphasized in national news headlines.
Several words were intentionally excluded from the analysis to make the results more meaningful. The words “Trump,” “Donald,” and “president” were removed because the dataset already consists of news stories mentioning Donald Trump. Including these terms could dominate the results without revealing additional themes.
Common reporting terms such as “says,” “said,” “news,” “latest,” and “update” were also removed because they describe journalistic presentation rather than specific issues.
Social media artifacts, URLs, numbers, and common English stop words were excluded to reduce irrelevant results.
These decisions allow the visualization to emphasize substantive topics rather than repetitive names, reporting language, or formatting artifacts.
The following is the full R script used to download, process, analyze, and visualize the headline data.
# Install and load packages
packages <- c("tidyverse", "tidytext", "forcats")
for (pkg in packages) {
if (!requireNamespace(pkg, quietly = TRUE)) {
install.packages(pkg)
}
}
library(tidyverse)
library(tidytext)
library(forcats)
# Download headlines
if (!file.exists("Trump_story_headlines.rds")) {
download.file(
url = paste0(
"https://github.com/drkblake/Data/raw/",
"refs/heads/main/Trump_story_headlines.rds"
),
destfile = "Trump_story_headlines.rds",
mode = "wb"
)
}
# Read data
headlines <- readRDS("Trump_story_headlines.rds")
stopifnot("title" %in% names(headlines))
headline_data <- headlines %>%
as_tibble() %>%
filter(!is.na(title), title != "") %>%
mutate(title = as.character(title))
# Define additional excluded words
excluded_words <- c(
"trump", "donald", "president",
"says", "said", "say",
"news", "latest", "update", "updates",
"watch", "video", "live",
"read", "photos", "photo",
"breaking", "today",
"https", "http", "www", "com",
"amp", "rt", "t.co"
)
# Tokenize
unigrams <- headline_data %>%
select(title) %>%
unnest_tokens(word, title)
# Remove unwanted words
clean_unigrams <- unigrams %>%
anti_join(stop_words, by = "word") %>%
filter(
!word %in% excluded_words,
!str_detect(word, "[0-9]"),
!str_detect(word, "^https?"),
!str_detect(word, "^www"),
str_detect(word, "^[a-z]+$"),
nchar(word) > 2
)
# Count word frequencies
word_counts <- clean_unigrams %>%
count(word, sort = TRUE)
# Select top 25
top_25 <- word_counts %>%
slice_max(
order_by = n,
n = 25,
with_ties = FALSE
)
# Build bar chart
unigram_plot <- ggplot(
top_25,
aes(
x = fct_reorder(word, n),
y = n
)
) +
geom_col(fill = "#3567A3", width = 0.75) +
coord_flip() +
labs(
title = "Most Common Words in Trump-Related Headlines",
subtitle = "Top 25 meaningful unigrams | Aug. 3 - Oct. 4, 2026",
x = NULL,
y = "Number of Occurrences",
caption = "Source: MediaCloud, United States - National collection"
) +
scale_y_continuous(
labels = scales::comma,
expand = expansion(mult = c(0, 0.08))
) +
theme_minimal(base_size = 12) +
theme(
plot.title = element_text(face = "bold", size = 15),
plot.subtitle = element_text(size = 10),
axis.text.y = element_text(size = 10),
panel.grid.major.y = element_blank(),
plot.caption = element_text(size = 9)
)
# Display results
print(top_25)
print(unigram_plot)