Introduction

This report examines the most frequently used words in 54,686 news headlines from stories mentioning Donald Trump, published between August 3 and October 4, 2026.

The analysis uses unigram tokenization to identify recurring words and explore the topics associated with Trump in news media coverage.

Unigram Frequency Analysis

The following chart displays the 25 most frequently used words after removing standard stop words, social media artifacts, and additional custom exclusions.

Interpretation

The unigram analysis of 54,686 news headlines suggests that coverage associated with Donald Trump frequently connects him to international affairs, political institutions, and legal developments. Among the most frequently occurring words, “Iran” appeared 2,840 times, followed by “house” (2,768), “war” (2,170), and “court” (2,013). The prominence of these terms suggests that international conflict and government-related developments were recurring subjects in the headlines.

Domestic politics also emerged as a significant theme. Words such as “GOP,” “senate,” “democrats,” and “republicans” indicate frequent associations with political parties and legislative activity. Meanwhile, words including “court,” “supreme,” and “judge” suggest that legal and judicial matters were another prominent component of the coverage. The appearance of “AI” also suggests that technology-related topics were present in the dataset.

Several words were intentionally excluded to improve the usefulness of the analysis. Variations of “Trump” and “Donald” were removed because all stories in the dataset already mentioned Trump, making those terms less informative for identifying additional themes. Generic words such as “president,” “news,” “said,” “says,” and “top” were also excluded because they provide limited information about specific subjects. Removing these terms allowed more meaningful topics to become visible in the final visualization.

These findings may reflect second-level agenda-setting, in which repeated associations between a political figure and particular issues influence how audiences perceive that figure. However, word frequency alone cannot establish the context or tone of coverage. Additional analysis would be necessary to determine whether these associations were positive, negative, or neutral.

Complete R Script


# REPORT 8: UNIGRAM ANALYSIS OF TRUMP NEWS HEADLINES

# Step 1: Load packages
library(tidyverse)
library(tidytext)

# Step 2: Import the headlines
headlines <- readRDS("Trump_story_headlines.rds")

# Step 3: Tokenize headlines into individual words
unigrams <- headlines %>%
  select(title) %>%
  filter(!is.na(title)) %>%
  unnest_tokens(word, title)

# Step 4: Remove common stop words
data("stop_words")

unigrams_clean <- unigrams %>%
  anti_join(stop_words, by = "word")

# Step 5: Remove social media artifacts
social_media_noise <- c(
  "https", "http", "www", "com",
  "amp", "rt", "tco", "co", "twitter"
)

unigrams_clean <- unigrams_clean %>%
  filter(!word %in% social_media_noise)

# Step 6: Count words before custom exclusions
initial_counts <- unigrams_clean %>%
  count(word, sort = TRUE)

# View the top 30 words to identify generic terms
print(head(initial_counts, 30))


# Step 7: Define custom stop words
custom_stop_words <- c(
  "trump", "trump’s", "trump's",
  "donald", "president",
  "news", "says", "said", "top"
)


# Step 8: Remove custom stop words
unigrams_final <- unigrams_clean %>%
  filter(!word %in% custom_stop_words)

# Step 9: Count final unigrams
unigram_counts_final <- unigrams_final %>%
  count(word, sort = TRUE)

# Step 10: Select the top 25 words
top_25_words <- unigram_counts_final %>%
  slice_max(n, n = 25, with_ties = FALSE)

print(top_25_words, n = 25)


# Step 11: Create the graph
word_chart <- ggplot(
  top_25_words,
  aes(x = reorder(word, n), y = n)
) +
  geom_col(fill = "steelblue") +
  geom_text(
    aes(label = n),
    hjust = -0.1,
    size = 3
  ) +
  coord_flip() +
  scale_y_continuous(
    expand = expansion(mult = c(0, 0.15))
  ) +
  labs(
    title = "Top 25 Words in News Headlines Mentioning Donald Trump",
    subtitle = "August 3 - October 4, 2026",
    x = "Word",
    y = "Number of Occurrences"
  ) +
  theme_minimal()

# Step 12: Display the graph
print(word_chart)