install.packages(“wbstats”)

Meta Data

library(wbstats)
## Warning: package 'wbstats' was built under R version 4.4.2
meta_data <- wb_cache()
topics <- meta_data$topics
write.csv(topics, "wb_topics.csv")

Search for indicators using keywords

gdp_ind <- wb_search("gdp")
head(gdp_ind)

Search the indicator data

gdp_per_capita <- wb_data("SP.POP.TOTL")
head(gdp_per_capita)

Financial Data

pacman::p_load(quantmod, rvest, jsonlite)
getSymbols(c("NVDA", "TSLA"), source = "yahoo")
## [1] "NVDA" "TSLA"
write.zoo(NVDA, "NVDA.csv", sep= ",")
getSymbols(c("FPCPITOTLZGCHN","FPCPITOTLZGEGY","FPCPITOTLZGUSA"), src="FRED")
## [1] "FPCPITOTLZGCHN" "FPCPITOTLZGEGY" "FPCPITOTLZGUSA"
tail(FPCPITOTLZGUSA)
##            FPCPITOTLZGUSA
## 2018-01-01       2.442583
## 2019-01-01       1.812210
## 2020-01-01       1.233584
## 2021-01-01       4.697859
## 2022-01-01       8.002800
## 2023-01-01       4.116338

How many stock days did you obtain?

symbol <- "MSFT"
start_date <- "2024-10-01"
end_date <- "2025-01-31"
getSymbols(symbol, src = "yahoo", from = start_date, to = end_date)
## [1] "MSFT"
msft_data <- get(symbol)
num_trading_days <- nrow(msft_data)
print(num_trading_days)
## [1] 83

Which time period did Microsoft’s open prices reach the highest?

getSymbols("MSFT", src = "yahoo", from = "2024-10-01", to = "2025-01-31")
## [1] "MSFT"
open_prices <- MSFT$MSFT.Open
max_open_date <- index(open_prices)[which.max(open_prices)]
max_open_value <- max(open_prices, na.rm = TRUE)
plot(index(open_prices), open_prices, type = "l", col = "blue", lwd = 2,
     xlab = "Date", ylab = "Open Price", main = "Microsoft Open Prices")

Write the R code to get another online data source of Wikipedia views data for Microsoft in English language from 2024-10-01 to 2025-01-31.

library(pageviews)
## Warning: package 'pageviews' was built under R version 4.4.2
microsoft_views <- article_pageviews(
  project = "en.wikipedia",
  article = "Microsoft",
  start = "2024100100",  # Append "00" for hours
  end = "2025013100",    # Append "00" for hours
  granularity = "daily"
)
head(microsoft_views)
dim(microsoft_views)
## [1] 123   8

How many days in total are with a Wikipedia views over 30,000

high_views <- subset(microsoft_views, views > 30000)
nrow(high_views)
## [1] 1

Is it workable to directly merge these two data objects as one data frame?

tryCatch({
  stock_rows <- nrow(msft_stock)
  wikipedia_rows <- nrow(microsoft_views)
  
  stock_dates <- msft_stock$Date
  wikipedia_dates <- microsoft_views$timestamp
  
  print(paste("Stock data observations: ", stock_rows))
  print(paste("Wikipedia data observations: ", wikipedia_rows))

  print("First few stock dates:")
  print(head(stock_dates))
  print("First few Wikipedia dates:")
  print(head(wikipedia_dates))
  

  common_dates <- intersect(stock_dates, wikipedia_dates)
  print(paste("Number of common dates: ", length(common_dates)))
}, error = function(e) {

  print(paste("Error: ", e$message))
})
## [1] "Error:  object 'msft_stock' not found"