小编Mih*_*ael的帖子

使用data.table:输出中缺少列的非equi连接

我使用data.table以下方法进行左非等连接:

OUTPUT <- DT2[DT1, on=.(DOB, FORENAME, SURNAME, POSTCODE, START_DATE <= MONTH, EXPIRY_DATE >= MONTH)]
Run Code Online (Sandbox Code Playgroud)

OUTPUT包含正确的左连接,与该异常MONTH列(这是目前在DT1)的缺失.

这是一个错误data.table吗?

注:当然,START_DATE,EXPIRY_DATEMONTH在同一个YYYY-MM-DD,IDATE格式.基于这些非等标准,连接的结果是正确的.只是缺少该列,我需要在进一步的工作中使用它.

编辑1:简化的可重复示例

DT1 <- structure(list(ID = c(1, 2, 3), FORENAME = c("JOHN", "JACK", 
"ROB"), SURNAME = c("JOHNSON", "JACKSON", "ROBINSON"), MONTH = structure(c(16953L, 
16953L, 16953L), class = c("IDate", "Date"))), .Names = c("ID", 
"FORENAME", "SURNAME", "MONTH"), row.names = c(NA, -3L), class = c("data.table", 
"data.frame"))

DT2 <- structure(list(CERT_NUMBER = 999, FORENAME = …
Run Code Online (Sandbox Code Playgroud)

join r left-join data.table

13
推荐指数
1
解决办法
1098
查看次数

为 Word/docx 输出在 RMarkdown 中为表格列标题分组名称

我想为 Word/docx 输出在 RMarkdown 表中对列名称进行分组。

使用pandoc.table

library(pander)
pandoc.table(mtcars[1:3, 1:4], style = "rmarkdown") 

|       &nbsp;        |  mpg  |  cyl  |  disp  |  hp  |
|:-------------------:|:-----:|:-----:|:------:|:----:|
|    **Mazda RX4**    |  21   |   6   |  160   | 110  |
|  **Mazda RX4 Wag**  |  21   |   6   |  160   | 110  |
|   **Datsun 710**    | 22.8  |   4   |  108   |  93  |
Run Code Online (Sandbox Code Playgroud)

这会产生下面的输出,这很好

降价输出

但是,假设我想将mpg&分组cyl到一个组中,然后将disp&分组到另一个组hp中(手动修改):

|                     |     group1    |     group2    |
|:-------------------:|:-------------:|:-------------:| …
Run Code Online (Sandbox Code Playgroud)

r pandoc knitr r-markdown pander

6
推荐指数
0
解决办法
1229
查看次数

RecordLinkage:如何仅配对最佳匹配并导出合并表?

我正在尝试使用 R 包RecordLinkage将采购订单列表中的项目与主目录中的条目进行匹配。下面是 R 代码和使用两个虚拟数据集(DOrders 和 DCatalogue)的可重现示例:

DOrders <- structure(list(Product = structure(c(1L, 2L, 7L, 3L, 4L, 5L, 
6L), .Label = c("31471 - SOFTSILK 2.0 SCREW 7mm x 20mm", "Copier paper white A4 80gsm", 
"High resilience memory foam standard  mattress", "Liston forceps bone cutting 152mm", 
"Micro reciprocating blade 25.4mm x 8.0mm x 0.38mm", "Micro reciprocating blade 39.5 x 7.0 x 0.38", 
"microaire dual tooth 18 x 90 x 0.89"), class = "factor"), Supplier = structure(c(5L, 
6L, 2L, 1L, 4L, …
Run Code Online (Sandbox Code Playgroud)

r duplicates linkage fuzzy-comparison data-linking

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

通过使用 data.table 在每个组中向前滚动来填充缺失值

我的目标是通过向前滚动来按组填充缺失值。

虚拟数据

library(data.table)

DT <- structure(list(CLASS = c("A", "A", "A", "A", "A", "A", "B", "B","B"),
VAL = c(NA, 1, NA, NA, 2, NA, 50, NA, 100)),
.Names = c("CLASS", "VAL"),
row.names = c(NA, -9L), class = c("data.table", "data.frame"))

> DT
   CLASS VAL
1:     A  NA
2:     A   1
3:     A  NA
4:     A  NA
5:     A   2
6:     A  NA
7:     B  50
8:     B  NA
9:     B 100
Run Code Online (Sandbox Code Playgroud)

想要的结果

   CLASS VAL
1:     A  NA
2:     A   1
3:     A …
Run Code Online (Sandbox Code Playgroud)

r missing-data data.table

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

如何在 SQL 中实现 tidyr 的 complete()?

使用一个虚拟示例,我需要完成一个包含隐式缺失值的数据集。这在Rusingtidyr的函数中是微不足道的complete

library(tidyr)

df <- data.frame(Borough = c('Brooklyn', 'Brooklyn', 'Queens'),
                 Crime = c('Robbery', 'Homicide', 'Drug'),
                 Count=c(1, 2, 1))

> df
   Borough    Crime Count
1 Brooklyn  Robbery     1
2 Brooklyn Homicide     2
3   Queens     Drug     1

#Complete implicit missing values

> complete(df, Borough, Crime, fill=list(Count=0))
   Borough    Crime Count
1 Brooklyn     Drug     0
2 Brooklyn Homicide     2
3 Brooklyn  Robbery     1
4   Queens     Drug     1
5   Queens Homicide     0
6   Queens  Robbery     0
Run Code Online (Sandbox Code Playgroud)

但是,在实际数据非常大并且存储在 Oracle 的 SQL …

sql oracle r tidyr

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

data.table v.1.11.0 +不再fread由v.1.10.4-3发送的数据文件

我在新版本中遇到了一个可能的错误data.table.我有一个带有c的2GB .csv文件.300万行和67列.我可以使用fread()从data.table v.1.10.4-3中读取它,但v.1.11.0 +在中间某处终止.基地read.csv()也遇到了同样的问题.我非常喜欢data.table并希望在Github上创建一个错误报告,但显然我无法在任何地方上传2GB数据文件.

我需要一种在问题点周围拼接约10行的方法(行号已知),以便创建一个可移植的可重复示例.如果没有在.csv文件中阅读我怎么能这样做?

另外,是否有一个程序可用于打开原始文件以查看有问题的点并查看导致问题的原因?Notepad/Excel不会打开这么大的文件.

编辑:详细输出.

编辑2:是有问题的路线.它表明,应该是一行的是以某种方式分成3行.我只能假设这是由于用于创建CSV的古老软件(SAP Business Objects)中的导出错误.它引起一个问题并不令人惊讶.然而,令人惊讶的是data.tablev.1.10.4-3能够以智能方式处理它并正确读取它,而v.1.11.0 +则不能.它能用编码或技术隐藏字符做些什么吗?

EDIT3:证明这才是真正发生的事情.

csv r data.table

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

Oracle PL/SQL:解决 DBMS 输出大小限制的方法

这个问题源于,但我遇到了另一个不同的问题。

我正在使用 PL/SQL 生成大文本输出

set serveroutput on size 1000000; -- maximum limit
declare my_text clob;    
begin
 for c in ( select letter from dummy_table ) 
  loop
    my_text := my_text  || c.letter || chr(10);
  end loop;
  dbms_output.put_line(my_text);
end;
Run Code Online (Sandbox Code Playgroud)

在真实的代码中,我当然不只是连接单个字母,字符串更长,并且连接有更多元素,整体也更长。我已经将输出缓冲区大小增加到 1000000(这是最大值),这有所帮助,但是当我进一步扩展串联时,又开始失败 - 但现在出现了与输出大小无关的不同错误消息,但我通过实验知道它确实有效,因为如果我减少行数它就会起作用。

在此输入图像描述

是否可以将 clob 保存到临时表中?clob 是这里使用的正确数据类型吗?

sql oracle plsql oracle19c

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