Если у вас есть данные только за 2010 и 2020 годы, мы можем arrange
данные на Ticker
и YEAR
, group_by
Ticker
и разделить last
значение ADJ_CLOSE
на first
.
library(dplyr)
df %>%
arrange(Ticker, YEAR) %>%
group_by(Ticker) %>%
summarise(ratio = last(ADJ_CLOSE)/first(ADJ_CLOSE))
# A tibble: 2 x 2
# Ticker ratio
# <fct> <dbl>
#1 A 4.18
#2 AAL 6.05
Если у вас есть данные и за другие годы, вы можете сначала filter
данные, а затем использовать тот же код.
df %>%
filter(YEAR %in% c(2020, 2010)) %>%
arrange(Ticker, YEAR) %>%
group_by(Ticker) %>%
summarise(diff = last(ADJ_CLOSE)/first(ADJ_CLOSE))
данные
df <- structure(list(Security_id = c(1L, 1L, 8L, 8L), Ticker = structure(c(1L,
1L, 2L, 2L), .Label = c("A", "AAL"), class = "factor"), Comp_Ticker = structure(c(1L,
1L, 2L, 2L), .Label = c("A:US", "AAL:US"), class = "factor"),
Exch_Ticker = structure(c(1L, 1L, 2L, 2L), .Label = c("A:UN",
"AAL:UW"), class = "factor"), YEAR = c(2010L, 2020L, 2010L,
2020L), MONTH = c(1L, 1L, 1L, 1L), DATE = c(4L, 10L, 4L,
10L), Security_Name = structure(c(1L, 1L, 2L, 2L), .Label = c("AgilentTechnologiesInc.",
"AmericanAirlinesGroupInc"), class = "factor"), ADJ_CLOSE = c(20.9323,
87.59, 4.511977, 27.32)), class = "data.frame", row.names = c(NA, -4L))