Я пытаюсь применить функцию для преобразования финансовых счетов ряда компаний в доллары США.
Фирмы, относящиеся к каждой валюте, можно найти ниже.
USDfirms <- c("GOOG", "AMZN", "AAPL", "CSCO", "FB", "HP", "IBM", "0992.HK",
"MSFT", "CRM", "TWTR", "WB", "ZTE.CN")
CNYfirms <- c("BABA", "BIDU", "1169.HK", "HMI", "3888.HK", "1357.HK", "NTES",
"TCEHY", "1810.HK", "0763.HK")
TWDfirms <- c("2357.TW", "2324.TW", "2356.TW", "2498.TW", "3231.TW")
KRWfirms <- c("003550.KS", "005930.KS")
JPYfirms <- c("5563.T", "7752.T")
EURfirms <- "NOK"
Итак CNYfirms
соответствуют китайским фирмам, финансовые счета которых находятся в юанях.dput()
представляет собой дамп примерно из 30 финансов компаний и может быть найден здесь .
РЕДАКТИРОВАТЬ: ссылка 2 здесь http://s000.tinyupload.com/download.php?file_id=06545415747486823455&t=0654541574748682345555828
Его называют BSISCF
df
- dput
() называется BSISCF
.
У меня также есть таблица конвертации валют:
, которая выглядит следующим образом;
# A tibble: 1 x 6
date cny_usd twd_usd krw_usd jpy_usd eur_usd
<date> <dbl> <dbl> <dbl> <dbl> <dbl>
1 2018-04-01 0.159 0.0344 0.000943 0.00941 1.23
Данные
fx <-structure(list(date = structure(17622, class = "Date"), cny_usd = 0.159228,
twd_usd = 0.03442, krw_usd = 0.000943, jpy_usd = 0.009408,
eur_usd = 1.232305), row.names = c(NA, -1L), class = c("tbl_df",
"tbl", "data.frame"), .Names = c("date", "cny_usd", "twd_usd",
"krw_usd", "jpy_usd", "eur_usd"))
У меня есть следующая функция, и я пытаюсь сделать это - взять столбец symbol
и использовать операторы ifelse
.Таким образом, если столбец symbol
совпадает с символом в CNYfirms
, то в столбец exchange.rates
введите обменный курс cny_usd
из таблицы fx
.Сделайте это для всех символов.Значения NA будут соответствовать фирмам в долларах США, поскольку в таблице fx
нет курса доллара США.
BSISCF <- BSISCF %>%
separate(symbol, into = c("ticker", "country"),
sep = "[.]", convert = TRUE, remove = FALSE) %>% # The NA values just correspond to US data
mutate(exchange.rates = ifelse(symbol == CNYfirms, fx$cny_usd,
ifelse(symbol == TWDfirms, fx$twd_usd,
ifelse(symbol == KRWfirms, fx$krw_usd,
ifelse(symbol == JPYfirms, fx$jpy_usd,
ifelse(symbol == EURfirms, fx$eur_usd, 0)))))) %>%
select(exchange.rates, everything())
Хорошо, эта информация - следующие шаги, которые я предприму после сбора курсов обмена
mutate(exchange.rates = ifelse(is.na(country), 1, exchange.rates)) %>%
mutate_at(.funs = funs(fx = .*exchange.rates), .vars = vars(Cash.And.Cash.Equivalents:Change.In.Cash.and.Cash.Equivalents)) %>%
mutate(adjusted_fx = adjusted*exchange.rates) #All financial statements and the stocks adjusted price converted into USD
Если есть что-то, что я плохо объяснил, дайте мне знать.