嗨,我正在尝试用lubridate获取一系列日期
这不起作用
seq(ymd('2012-04-07'),ymd('2013-03-22'),by=week(1))
Run Code Online (Sandbox Code Playgroud)
基本命令
seq(as.Date('2012-04-7'),as.Date('2013-03-22'),'weeks')
Run Code Online (Sandbox Code Playgroud)
但是,我想知道是否有一种优雅的方式与lubridate这样做.
编辑
请忽略:解决自己,所以只留下后人.很高兴在必要时将其删除.
seq(ymd('2012-04-07'),ymd('2013-03-22'),by='weeks')
Run Code Online (Sandbox Code Playgroud)
诀窍
我正在尝试使用data.table来加速处理由几个较小的合并data.frames组成的大型data.frame(300k x 60).我是data.table的新手.到目前为止的代码如下
library(data.table)
a = data.table(index=1:5,a=rnorm(5,10),b=rnorm(5,10),z=rnorm(5,10))
b = data.table(index=6:10,a=rnorm(5,10),b=rnorm(5,10),c=rnorm(5,10),d=rnorm(5,10))
dt = merge(a,b,by=intersect(names(a),names(b)),all=T)
dt$category = sample(letters[1:3],10,replace=T)
Run Code Online (Sandbox Code Playgroud)
我想知道是否有比以下更有效的方法来总结数据.
summ = dt[i=T,j=list(a=sum(a,na.rm=T),b=sum(b,na.rm=T),c=sum(c,na.rm=T),
d=sum(d,na.rm=T),z=sum(z,na.rm=T)),by=category]
Run Code Online (Sandbox Code Playgroud)
我真的不想手工输入所有50列计算,而且eval(paste(...))似乎很笨拙.
我看了下面的例子,但对我的需求似乎有点复杂.谢谢
如果我有一个数据框
set.seed(12345)
df=data.frame(a=rnorm(5),b=rnorm(5))
Run Code Online (Sandbox Code Playgroud)
我可以通过例如添加一行
df[6,] =c(5,6)
如果我现在在data.table中做等效的
library(data.table)
dt=data.table(df)
dt[6,]=c(5,6)
Run Code Online (Sandbox Code Playgroud)
它失败并出现错误.将行插入data.table的正确方法是什么?
我正在尝试将函数应用于大型data.table中的一组列,而不是单独引用每个列.
a <- data.table(
a=as.character(rnorm(5)),
b=as.character(rnorm(5)),
c=as.character(rnorm(5)),
d=as.character(rnorm(5))
)
b <- c('a','b','c','d')
Run Code Online (Sandbox Code Playgroud)
以上MWE,这个:
a[,b=as.numeric(b),with=F]
Run Code Online (Sandbox Code Playgroud)
工作,但这:
a[,b[2:3]:=data.table(as.numeric(b[2:3])),with=F]
Run Code Online (Sandbox Code Playgroud)
不起作用.将as.numeric函数应用于第2列和第3列的正确方法是什么,a而不单独引用它们.
(在实际的数据集中有几十列,所以这是不切实际的)
有没有办法在另一个中嵌入一个markdown(或其子风格 - 我正在使用PanDoc)文档,除了使用jQuery().load(url)?
我想要一份有例如的文件.main.md,chapter1.md,chapter2.md,与main.md负载chapter1.md和chapter2.md自动.
main.md 将在两章之间插入文字,例如
main.md:
Some opening text...
...
[chapter1.md]
Some additional text...
...
[chapter2.md]
...
something else.
Run Code Online (Sandbox Code Playgroud)
所以我不能用一种cat *.md > final.md方法
如果我有一个标题
... +
ggtitle('Something\nSomething Else\nSomething Else')
Run Code Online (Sandbox Code Playgroud)
有什么方法可以让每条线对齐而不是左对齐在中心?
...+
theme(plot.title=element_text(hjust=0.5))
Run Code Online (Sandbox Code Playgroud)
给我中心的文字,但左对齐.
您想调整以下图表,以便零以下的值填充为红色,上面的值为深蓝色.我怎么能用ggplot2做到这一点?
mydata = structure(list(Mealtime = "Breakfast", Food = "Rashers", `2002` = 9.12,
`2003` = 9.5, `2004` = 2.04, `2005` = -20.72, `2006` = 18.37,
`2007` = 91.19, `2008` = 94.83, `2009` = 191.96, `2010` = -125.3,
`2011` = -18.56, `2012` = 63.85), .Names = c("Mealtime", "Food", "2002", "2003", "2004", "2005", "2006", "2007", "2008","2009", "2010", "2011", "2012"), row.names = 1L, class = "data.frame")
x=ggplot(mydata) +
aes(x=colnames(mydata)[3:13],y=as.numeric(mydata[1,3:13]),fill=sign(as.numeric(mydata[1,3:13]))) +
geom_bar(stat='identity') + guides(fill=F)
print(x)
Run Code Online (Sandbox Code Playgroud) 嗨,我真的用Google搜索了很多,没有任何快乐.如果网站存在,很乐意获得对网站的引用.我很难理解Hadley关于极坐标的文档,我知道馅饼/甜甜圈图表本质上是邪恶的.
那就是说,我要做的是
为什么?我正在寻找财务信息.第一个环是成本(分解),第二个环是总收入.然后,我们的想法是+ facet=period在每个审核期间添加,以显示收入和支出以及两者的增长趋势.
任何想法都将非常感激
注意:如果尝试使用MWE,则完全随意
donut_data=iris[,2:4]
revenue_data=iris[,1]
facet=iris$Species
Run Code Online (Sandbox Code Playgroud)
这与我正在尝试做的类似..谢谢
我正在尝试将数据表添加到ggplot中创建的图形中(类似于excel功能,但可以灵活地将轴更改为on)
我已经做了一些事情,并继续遇到缩放的问题所以尝试1)
library(grid)
library(gridExtra)
library(ggplot2)
xta=data.frame(f=rnorm(37,mean=400,sd=50))
xta$n=0
for(i in 1:37){xta$n[i]<-paste(sample(letters,4),collapse='')}
xta$c=0
for(i in 1:37){xta$c[i]<-sample((1:6),1)}
rect=data.frame(xmi=seq(0.5,36.5,1),xma=seq(1.5,37.5,1),ymi=0,yma=10)
xta=cbind(xta,rect)
a = ggplot(data=xta,aes(x=n,y=f,fill=c)) + geom_bar(stat='identity')
b = ggplot(data=xta,aes(x=n,y=5,label=round(f,1))) + geom_text(size=4) + geom_rect(aes(xmin=xmi,xmax=xma,ymin=ymi,ymax=yma),alpha=0,color='black')
z = theme(axis.text=element_blank(),panel.background=element_rect(fill='white'),axis.ticks=element_blank(),axis.title=element_blank())
b=b+z
la=grid.layout(nrow=2,ncol=1,heights=c(0.15,2),default.units=c('null','null'))
grid.show.layout(la)
grid.newpage()
pushViewport(viewport(layout=la))
print(a,vp=viewport(layout.pos.row=2,layout.pos.col=1))
print(b,vp=viewport(layout.pos.row=1,layout.pos.col=1))
Run Code Online (Sandbox Code Playgroud)
哪个产生了

第二次尝试2)
xta1=data.frame(t(round(xta$f,1)))
xtb=tableGrob(xta1,show.rownames=F,show.colnames=F,show.vlines=T,gpar.corefill=gpar(fill='white',col='black'),gp=gpar(fontsize=12),vp=viewport(layout.pos.row=1,layout.pos.col=1))
grid.newpage()
la=grid.layout(nrow=2,ncol=1,heights=c(0.15,2),default.units=c('null','null'))
grid.show.layout(la)
grid.newpage()
pushViewport(viewport(layout=la))
print(a,vp=viewport(layout.pos.row=2,layout.pos.col=1))
grid.draw(xtb)
Run Code Online (Sandbox Code Playgroud)
哪个产生了

最后3)是
grid.newpage()
print(a + annotation_custom(grob=xtb,xmin=0,xmax=37,ymin=450,ymax=460))
Run Code Online (Sandbox Code Playgroud)
哪个产生了

其中选项2将是最好的,如果我可以将tableGrob缩放到与绘图相同的大小,但我不知道如何做到这一点.关于如何进一步采取行动的任何指示?- 谢谢
我使用RStudio来处理R编程语言,并找到ctrl+enter向控制台发送一行的快捷方式,对我的工作进行故障排除非常有用.
现在我正在使用sublimetext2,我想在RStudio中做同样的事情,向控制台发送一行.
有没有办法将现有线路发送到控制台或SublimeREPL控制台?
r ×9
ggplot2 ×4
data.table ×3
graphics ×2
formatting ×1
gridextra ×1
indices ×1
lubridate ×1
markdown ×1
r-grid ×1
sublimetext2 ×1
tikz ×1
viewport ×1