[R] hist from a list
Rasmus Liland
jr@| @end|ng |rom po@teo@no
Fri Jul 31 18:28:47 CEST 2020
On 2020-07-31 10:07 -0500, Joshua Ulrich wrote:
| On Fri, Jul 31, 2020 at 9:55 AM Rui Barradas wrote:
| | Às 15:44 de 31/07/2020, Michael Dewey escreveu:
| | | Dear Pedro
| | |
| | | Some comments in-line
| | |
| | | On 30/07/2020 21:16, Pedro páramo wrote:
| | | | Hi all,
| | | |
| | | | I attach my code, the think is I
| | | | want to make a bar plot the last
| | | | variable called "bwchist" so the
| | | | X axis are "Accion" and the y
| | | | axis are "reval" values.
| | | |
| | | | I have prove class(bwchist) and
| | | | says dataframe but its still a
| | | | list because it says me I have
| | | | prove to unlist, but it doesnt
| | | | work
| | | |
| | | | hist(bwchist)
| | | | Error in hist.default(bwchist) : 'x' must be numeric
| | |
| | | So bwchist is not a numeric
| | | variable as hist needs. Aboce you
| | | said it is a data frame but data
| | | frames are not numeric.
| | |
| | | For future reference your example
| | | is way too long for anyone to go
| | | through and try to help you. Try
| | | next time to reduce it to the
| | | absolute minimum by removing
| | | sections while you still get the
| | | error. It is also easier to get
| | | help if you can remove unnecessary
| | | packages.
| | |
| | | It is also unreadable because you
| | | are posting in HTML and that makes
| | | the post unreadable as this is a
| | | plain text list.
| |
| | Hello,
| |
| | I second Michael's opinion. When the
| | post's code is very long, there is a
| | tendency to have less answers.
| |
| | Please post the output of
| |
| | dput(head(bwchist, 30))
| |
| | It's much shorter code and it
| | recreates the data so we will be
| | able to see what's wrong and try to
| | find a solution.
|
| Hi Pedro,
|
| Another 'best practice' and polite
| thing to do is link to other places
| you may have cross-posted. That will
| give people the opportunity to see if
| your questions has been answered in
| another forum.
|
| I saw your post on R-SIG-Finance
| (https://stat.ethz.ch/pipermail/r-sig-finance/2020q3/014979.html),
| and started to work on a solution.
|
| I don't know how to do this in
| tidyquant, but here's how you can do
| it with quantmod:
|
| # all tickers
| tk <- c("ANA.MC", "ACS.MC", "AENA.MC", "AMS.MC", "MTS.MC", "BBVA.MC", "SAB.MC",
| "SAN.MC", "BKT.MC", "CABK.MC", "CLNX.MC", "ENG.MC", "ENC.MC", "ELE.MC",
| "FER.MC", "GRF.MC", "IBE.MC", "ITX.MC", "COL.MC", "IAG.MC", "MAP.MC",
| "MEL.MC", "MRL.MC", "NTGY.MC", "REE.MC", "REP.MC", "SGRE.MC", "TEF.MC",
| "VIS.MC", "ACX.MC", "BKIA.MC", "CIE.MC", "MAS.MC", "ALM.MC", "IDR.MC")
|
| # download them into an environment ('e')
| require(quantmod)
| getSymbols(tk, from = "2019-12-31", env = (e <- new.env()))
|
| # extract adjusted close column
| adj <- lapply(e, Ad)
| # calculate daily returns from adjusted data,
| # merge into a xts matrix, and fill NA with 0
| ret <- do.call(merge, c(lapply(adj, dailyReturn), fill = 0))
| # cumulative returns
| cumret <- cumprod(1 + ret) - 1
| # set names
| colnames(cumret) <- names(adj)
| last(cumret)
| # calculate histogram for period-to-date returns
| hist(drop(last(cumret)))
|
| I'm not sure that's the histogram
| you're looking for, but I hope it
| gives you a start toward a solution.
|
| Best,
| Josh
Wow Josh! That's very elegant.
Myself now, I just plowed through the
original code to make it simpler, but am
at a loss as to how this histogram looks
...
x <- c("ANA.MC", "ACS.MC", "AENA.MC", "AMS.MC", "MTS.MC", "BBVA.MC",
"SAB.MC", "SAN.MC", "BKT.MC", "CABK.MC", "CLNX.MC", "ENG.MC",
"ENC.MC", "ELE.MC", "FER.MC", "GRF.MC", "IBE.MC", "ITX.MC",
"COL.MC", "IAG.MC", "MAP.MC", "MEL.MC", "MRL.MC", "NTGY.MC",
"REE.MC", "REP.MC", "SGRE.MC", "TEF.MC", "VIS.MC", "ACX.MC",
"BKIA.MC", "CIE.MC", "MAS.MC", "ALM.MC", "IDR.MC")
stock.prices <-
lapply(x, function(stock) {
tidyquant::tq_get(x=stock,from = '2019-12-31',get = "stock.prices")
})
names(stock.prices) <- x
library(tidyquant)
returns <- lapply(stock.prices, function(data) {
tab <-
tq_transmute(
data = data,
select = adjusted, # this specifies which column to select
mutate_fun = periodReturn, # This specifies what to do with that column
period = "daily", # This argument calculates Daily returns
col_rename = "idr_returns") # renames the column
tab[,"cr"] <- cumprod(1 + tab[,"idr_returns"])
tab[,"cumulative_returns"] <- tab[,"cr"] - 1
dplyr::pull(
tab[nrow(tab[,"cumulative_returns"]),
"cumulative_returns"]
)
})
bestworst <- simplify2array(returns)
namebw <-
c("Acciona", "ACS", "Aena", "Amadeus",
"ArcelorMittal", "BBVA", "Sabadell",
"Santander", "Bankinter",
"CaixaBank", "Cellnex", "Enagas",
"ENCE", "Endesa", "Ferrovial",
"Grifols", "Iberdrola", "Inditex",
"Colonial", "IAG", "Mapfre",
"Melia", "Merlin", "Naturgy", "REE",
"Repsol", "SGamesa", "Telefonica",
"Viscofan", "Acerinox", "Bankia",
"CIE", "MasMovil", "Almirall",
"Indra")
bwc <- data.frame(
symbol=names(bestworst),
Accion=namebw,
reval=bestworst)
| | | | bwc<-cbind(bwfinal2,bwfinal)
| | | | colnames(bwc)=c("Accion","reval")
| | | | bwc <- as.data.frame(bwc)
... aaaand you know something's
happening between here (where bwchist is
created), but you don't know what it is,
do you, Mr páramo?
| | | | colnames(bwchist)=c("Accion","reval")
| | | | bwchist <-as.data.frame(bwc[order(bwc$reval), ])
Best,
Rasmus
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20200731/a8fcb94d/attachment.sig>
More information about the R-help
mailing list