我有一个data.frame给出如下.我试图将它从长格式转移到宽格式.使用传播列为日期.从tidyr包中使用扩散函数提出了两个问题:
那我怎么去
30-Apr-2015 632.95
28-May-2015 532.95
25-Jun-2015 232.95
Run Code Online (Sandbox Code Playgroud)
至
30-Apr-2015 28-May-2015 25-Jun-2015
632.95 532.95 232.95
Run Code Online (Sandbox Code Playgroud)
相反,我最终在
30-Apr-2015 25-Jun-2015 28-May-2015
632.95 NA 232.95
NA 232.95 NA
NA NA 532.95
Run Code Online (Sandbox Code Playgroud)
实际日期并不重要,但是它们的相对排序事项,即最近的月份数据应该按顺序进入第一列,然后是其他两个月的数据.这是必要的,因为我正在使用rbind结果
我试过的代码
data = tidyr::spread(data, key = EXPIRY_DT, value = CHG_IN_OI)
colnames(data)[3:5] = c('Month1', 'Month2', 'Month3')
Run Code Online (Sandbox Code Playgroud)
data.frame如下所示:
data = structure(list(SYMBOL = c("A", "A", "A", "B", "B", "B", "C",
"C", "C", "D", "D", "D"), EXPIRY_DT = c("30-Apr-2015", "28-May-2015",
"25-Jun-2015", "30-Apr-2015", "28-May-2015", "25-Jun-2015", "30-Apr-2015",
"28-May-2015", "25-Jun-2015", "30-Apr-2015", "28-May-2015", …Run Code Online (Sandbox Code Playgroud) 按照这个答案,我试图获取当月最后一个星期四的日期。但是我的代码没有跳出循环。
from datetime import datetime
from dateutil.relativedelta import relativedelta, TH
todayte = datetime.today()
cmon = todayte.month
nthu = todayte
while nthu.month == cmon:
nthu += relativedelta(weekday=TH(1))
#print nthu.strftime('%d%b%Y').upper()
Run Code Online (Sandbox Code Playgroud) 我正在使用ggplot在函数内写一堆图.我想将另一个标志传递给函数,以便我可以在调用函数时选择是否绘制线条或点.
目前我这样做:
plot2pdfHD = function(opdata, dir = 'plots'){
#... do something ...
plots <- list()
for (i in seq(strikes)){
#... do something ...
plots[[i]] <- ggplot(sset, aes(x = TIMESTAMP, y = value, col = optype)) +
geom_line() + labs(x = "Time", y = 'values') +
#... do something ...
}
pdf(paste0(dir, '/', Sys.Date(), '.pdf'), width=16, height=10)
for(i in seq(length(plots)))
tryCatch({print(plots[[i]])}, error = function(e) NULL)
dev.off()
}
Run Code Online (Sandbox Code Playgroud)
我想添加一个标志,以便通过适当的值设置为标志,我可以之间进行切换geom_line(),并geom_point()同时调用该函数.
加成:
可以在不重复额外调用部分的情况下完成,即#... do something ...?我希望得到一个答案.
也是sset …