相关疑难解决方法(0)

dplyr中的唯一行:rowbumber()从tbl_dt与tbl_df不一致

en bref:

我想知道如何从工作流data.table的某个地方获取唯一的行dplyr.从v0.2开始我可以使用row_number==1(参见: 使用dplyr删除重复的行)

但!

tbl_df(data) %>% group_by(Var1,Var2) %>% filter(row_number() == 1) 作品.

tbl_dt(data) %>% group_by(Var1,Var2) %>% filter(row_number() == 1)没有.这是一个错误吗?

建立:

library(dplyr)
library(data.table)
library(microbenchmark)

little <- expand.grid(rep(letters,121),rep(letters,121)) # my 10M row dataset.
tbl_dt(little) %>% group_by(Var1,Var2) %>% filter(row_number() == 1)
Run Code Online (Sandbox Code Playgroud)

结果:

> Error in rank(x, ties.method = "first") : 
> argument "x" is missing, with no default
Run Code Online (Sandbox Code Playgroud)

这就是我实际上发现它被打破的方式.我在问:

这样或那样?

我可以使用这个unique.data.table方法:

 dt_u <- function() {
           tbl_dt(little) %>% 
           group_by(Var1,Var2) …
Run Code Online (Sandbox Code Playgroud)

performance r dplyr

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

R data.table setkey by dplyr::group_by?

我一起使用 data.table 和 dplyr。我最近注意到 dplyr::group_by 也可以将 key 设置为 data.table 对象。

# R version 3.1.0    
library(data.table) # 1.9.2
library(dplyr) # 0.1.3

dt <- data.table(A=rep(c("a", "b"), times=c(2, 3)), B = rep(1, 5))
tables()
#      NAME NROW MB COLS KEY
# [1,] dt      5  1 A,B
# Total: 1MB

group_by(dt, A)
tables()
#      NAME NROW MB COLS KEY
# [1,] dt      5  1 A,B  A
# Total: 1MB
Run Code Online (Sandbox Code Playgroud)

我想知道为什么会发生这种情况。这是故意的吗?据我所知,Hadley 正试图使 dplyr 与 data.table 兼容。

(如果可能的话,我也想知道 key 在 data.table 中是如何实现的。很好奇为什么 setkey 可以就地改变它?)

谢谢


根据 …

r dplyr data.table

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

data.table外连接按组

我正在尝试使用data.table来填充我所拥有的大型不平衡多维面板中的缺失观察结果.下面是一个数据示例,其中包含一些关于我想要的内容的评论:

mydat <- structure(list(fund = c(1, 1, 1, 1, 2, 2, 2, 3, 3), holdingid = c(10,                                                                                                                                        
 10, 11, 11, 15, 15, 14, 20, 20), yearqtr = structure(c(2000,                                                                                                                                                 
 2000.5, 2000, 2000.25, 2000, 2000.75, 2000.25, 2000.25, 2000.5                                                                                                                                               
 ), class = "yearqtr"), shares = c(20, 25, 30, 30, 34, 34, 4,                                                                                                                                                 
 8, 10)), .Names = c("fund", "holdingid", "yearqtr", "shares"), row.names = c(NA,                                                                                                                             
 -9L), class = "data.frame")

allqtrs <- structure(c(2000, 2000.25, 2000.5, 2000.75), class = "yearqtr")

#note that there are missing yearqtrs for …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

标签 统计

r ×3

data.table ×2

dplyr ×2

performance ×1