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) 我一起使用 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 可以就地改变它?)
谢谢
根据 …
我正在尝试使用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)