小编Dan*_*ian的帖子

同时向前和向后滚动 data.table

这与上一个关于 SO 的问题有关:roll data.table with rollends

鉴于数据...

library(data.table)

dt1 = data.table(Date=seq(from=as.Date("2013-01-03"),
                      to=as.Date("2013-06-27"), by="1 week"),
             key="Date")[, ind:=.I]
dt2 = data.table(Date=seq(from=as.Date("2013-01-01"),
                      to=as.Date("2013-06-30"), by="1 day"),
             key="Date")
Run Code Online (Sandbox Code Playgroud)

我尝试将每周数据点向前和向后移动一天......

dt1[dt2, roll=1][dt2, roll=-1]
Run Code Online (Sandbox Code Playgroud)

...但只有第一个 roll join (forward)似乎有效并且roll=-1被忽略:

           Date ind
  1: 2013-01-01  NA
  2: 2013-01-02  NA
  3: 2013-01-03   1
  4: 2013-01-04   1
  5: 2013-01-05  NA
 ---               
177: 2013-06-26  NA
178: 2013-06-27  26
179: 2013-06-28  26
180: 2013-06-29  NA
181: 2013-06-30  NA
Run Code Online (Sandbox Code Playgroud)

当我颠倒顺序时,效果相同:

dt1[dt2, roll=-1][dt2, roll=1]

           Date ind
  1: 2013-01-01  NA
  2: …
Run Code Online (Sandbox Code Playgroud)

r data.table

5
推荐指数
1
解决办法
576
查看次数

在`pandoc`转换期间堆栈空间溢出错误消息(大数据?)

我试图复制这个优秀的页面.

当我从GitHub编织markdown文件retail.Rmd,使用RStudio (v0.98.729),我收到错误信息:

输出文件:retail.knit.md

G:/ R/RStudio/bin/pandoc/pandoc retail.utf8.md - to html - from markdown + autolink_bare_uris + ascii_identifiers + tex_math_single_backslash-implicit_figures --output retail.html --filter G:/ R/RStudio/bin/pandoc/pandoc-citeproc --section-divs --smart --self-contained --template G:\ R\library\rmarkdown\rmd\h\default.html --variable jquery:G:\ R\library\rmarkdown\rmd\h\jquery-1.10.2 - 变量引导程序:G:\ R\library\rmarkdown\rmd\h\bootstrap-3.0.3 - 变量主题:G:\ R\library\rmarkdown\rmd\h\bootstrap-3.0.3\css\bootstrap.min.css --no-highlight --variable highlightjs = G:\ R\library\rmarkdown\rmd\h\highlight --mathjax --variable mathjax-url:https :?//c328740.ssl.cf1.rackcdn.com/mathjax/latest/MathJax.js配置= TEX-AMS-MML_HTMLorMML

堆栈空间溢出:当前大小为16777216字节.使用`+ RTS -Ksize -RTS'来增加它.

错误:pandoc文档转换失败执行暂停

我怀疑错误与底层数据的大小(8.6MB)有关,因为当我执行以下操作并再次编织时,错误消息将消失:

french_industry_xts <- french_industry_xts[1:10000,]
Run Code Online (Sandbox Code Playgroud)

如错误消息所示,如何增加堆栈空间的大小?

r pandoc rstudio knitr rcharts

5
推荐指数
0
解决办法
432
查看次数

测试两个`data.table`是否指向相同的内存位置

让我们:

DT1 <- data.table(iris)
DT2 <- DT1 # both reference the same memory location though
DT3 <- copy(DT1)
Run Code Online (Sandbox Code Playgroud)

问题:有没有办法检查是否DT2继续引用相同的内存位置DT1

像这样的伪函数:

mem.identical(DT2, DT1) # should return TRUE
mem.identical(DT3, DT1) # should return FALSE
Run Code Online (Sandbox Code Playgroud)

不幸的是,identical或者all.equal不为此目的而工作,因为

identical(DT1,DT3) # gives TRUE
Run Code Online (Sandbox Code Playgroud)

只有在引入一些变化后,才能使用identical以下方法检测差异:

DT1[,Test:=1] # introduces change to DT1 directly, to DT2 indirectly
identical(DT1,DT2) # TRUE - proves that DT2 is linked with DT1
identical(DT1,DT3) # FALSE - DT1 and DT3 are clearly decoupled
Run Code Online (Sandbox Code Playgroud)

r data.table

5
推荐指数
1
解决办法
121
查看次数

按名称引用`data.table`列

假设有:

DT = data.table(a=1, b=2, "a+b"=8)
Run Code Online (Sandbox Code Playgroud)

并且有变量col="a+b"引用第三列DT

如何通过引用对该列执行操作?比方说,我要乘col2,所以在上面的例子的结果应该是8*2=16,不(1+2)*2=6

例如,这显然不起作用:

DT[, c:=as.name(col)*2]
Run Code Online (Sandbox Code Playgroud)

r data.table

5
推荐指数
1
解决办法
840
查看次数

使用变量将数据库路径传递到\ l或.Ql

我正在编写一个在特定路径中加载数据库并对其进行一些处理的aq脚本。db的位置当前在脚本中进行了硬编码,但是我想将db路径作为参数传递,并从变量的路径中加载它。

当前看起来像这样:

q) \l /path/to/dbDir        #Works
Run Code Online (Sandbox Code Playgroud)

我发现.Ql应该让我们使用变量来执行此操作,因此我尝试在脚本中使用以下内容,

dbPath:`$.z.x 0
.Q.l hsym dbPath            #Fails
Run Code Online (Sandbox Code Playgroud)

当使用参数/ path / to / dbDir运行时,该脚本始终会因一些不可读的内容而失败,并且:

':/path/to/dbDir: No such file or directory
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

kdb q-lang

4
推荐指数
2
解决办法
1815
查看次数

以编程方式获取 RStudio 查看器窗格尺寸

是否可以通过编程方式获取当前的 RStudio 查看器窗格尺寸?

本文介绍了如何设置它们(仅高度):

https://support.rstudio.com/hc/en-us/articles/202133558-Extending-RStudio-with-the-Viewer-Pane

r rstudio

4
推荐指数
1
解决办法
1389
查看次数

dplyr:将每个变量的多个`count` +`mutate`语句组合成一个语句

数据:

DT = structure(list(PE_RATIO = c(NA, 18.3468544431322, 21.8536295107188, NA, NA, NA), DIVIDEND_YIELD =c(NA, NA, 0.5283019, 1.06737822831035, NA, 0.55751900359546), DollarExposure = c(6765.12578958248, 95958.3106724681, 96328.1628155842, 291638.734002894, 170983.200676477, 185115.042371833)), .Names =c("PE_RATIO", "DIVIDEND_YIELD", "DollarExposure"), row.names = c(NA, -6L), class = c("data.table","data.frame"))
DT
#    PE_RATIO DIVIDEND_YIELD DollarExposure
# 1:       NA             NA       6765.126
# 2: 18.34685             NA      95958.311
# 3: 21.85363      0.5283019      96328.163
# 4:       NA      1.0673782     291638.734
# 5:       NA             NA     170983.201
# 6:       NA      0.5575190     185115.042
Run Code Online (Sandbox Code Playgroud)

我想计算多个变量(此处PE_RATIODIVIDEND_YIELD)的可用值的加权比例(称为"捕获" ).我可以在单独的语句中做到这一点,每个变量一个语句: …

r dplyr

4
推荐指数
1
解决办法
974
查看次数

kdb +:用0替换空整数

请考虑下表:

myTable:

a     b
-------
1     
2
3     10
4     50
5     30
Run Code Online (Sandbox Code Playgroud)

如何b用零替换空单元格?结果将是:

a     b
-------
1     0
2     0
3     10
4     50
5     30
Run Code Online (Sandbox Code Playgroud)

现在我正在做:

myTable: update b:{$[x~0Ni;0;x]}'b from myTable
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有更好/更容易的解决方案.

kdb

4
推荐指数
1
解决办法
3835
查看次数

KDB反向asof join(aj),即在下一个引用而不是上一个

aj[`time`sym;trade;quote] 正在使用先前的报价值加入每笔交易。

我想做同样的联接,但是引用的下一个值而不是上一个。

我该如何实现?

join k kdb

4
推荐指数
1
解决办法
564
查看次数

dplyr:计算组权重

快速提问,如何使用dplyr

例如,给定数据:

D = data.frame(cat=rep(LETTERS[1:2], each=2), val=1:4)

#   cat val
# 1   A   1
# 2   A   2
# 3   B   3
# 4   B   4
Run Code Online (Sandbox Code Playgroud)

期望的结果应该是:

#   cat weight
# 1   A    0.3     # (1+2)/10
# 2   B    0.7     # (3+4)/10
Run Code Online (Sandbox Code Playgroud)

还有什么比以下更简洁?

D %>% 
  mutate(total=sum(val)) %>% 
  group_by(cat) %>% 
  summarise(weight=sum(val/total))
Run Code Online (Sandbox Code Playgroud)

r dplyr

3
推荐指数
1
解决办法
2659
查看次数

标签 统计

r ×7

data.table ×3

kdb ×3

dplyr ×2

rstudio ×2

join ×1

k ×1

knitr ×1

pandoc ×1

q-lang ×1

rcharts ×1