library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
data <- read.table("MidtermDataTEJ.txt", header=TRUE, sep="\t", stringsAsFactors=FALSE)
data$Date <- as.Date(as.character(data$Date), format="%Y%m%d")
highest_prices <- data %>%
group_by(CO_ID, CoName) %>%
slice(which.max(Close)) %>%
select(CO_ID, CoName, Highest_Price = Close, Date_of_Highest_Price = Date) %>%
ungroup() %>%
arrange(desc(Highest_Price))
# Print the results
print("Highest prices for each ETF:")
## [1] "Highest prices for each ETF:"
print(highest_prices)
## # A tibble: 3 × 4
## CO_ID CoName Highest_Price Date_of_Highest_Price
## <dbl> <chr> <dbl> <date>
## 1 50 "Yuanta Taiwan Top50" 137. 2022-01-17
## 2 52 "FB Technology" 124. 2023-12-28
## 3 56 "PTD " 34.1 2023-12-27
# Find the overall highest price
overall_highest <- highest_prices %>%
slice(1)
print("\nOverall highest price:")
## [1] "\nOverall highest price:"
print(overall_highest)
## # A tibble: 1 × 4
## CO_ID CoName Highest_Price Date_of_Highest_Price
## <dbl> <chr> <dbl> <date>
## 1 50 Yuanta Taiwan Top50 137. 2022-01-17
# Calculate the range of prices for each ETF
price_range <- data %>%
group_by(CO_ID, CoName) %>%
summarize(
Min_Price = min(Close),
Max_Price = max(Close),
Price_Range = Max_Price - Min_Price
) %>%
arrange(desc(Price_Range))
## `summarise()` has grouped output by 'CO_ID'. You can override using the
## `.groups` argument.
print("\nPrice range for each ETF:")
## [1] "\nPrice range for each ETF:"
print(price_range)
## # A tibble: 3 × 5
## # Groups: CO_ID [3]
## CO_ID CoName Min_Price Max_Price Price_Range
## <dbl> <chr> <dbl> <dbl> <dbl>
## 1 50 "Yuanta Taiwan Top50" 18.0 137. 119.
## 2 52 "FB Technology" 9.49 124. 115.
## 3 56 "PTD " 4.99 34.1 29.1