我真正喜欢的data.table是:=通过引用更改表格的习惯用语,而不需要昂贵的副本.据我所知,data.table与其他方法相比,这是超快的方面之一.
现在,我开始玩dplyr这个看似同样高效的包.但由于结果仍然需要使用<-运营商进行分配,因此我预计此级别的性能会下降.然而,似乎没有.
举个例子:
library(dplyr)
library(Lahman)
library(microbenchmark)
library(ggplot2)
df <- Batting[ c("yearID", "teamID", "G_batting") ]
mb <- microbenchmark(
dplyr = {
tb <- tbl_df( df )
tb <- tb %.%
group_by( yearID, teamID ) %.%
mutate( G_batting = max(G_batting) )
},
data.table = {
dt <- as.data.table( df )
dt[ , G_batting := max(G_batting), by = list( yearID, teamID ) ]
},
times = 500
)
qplot( data = mb, x …Run Code Online (Sandbox Code Playgroud) 在dplyr链中替换NA的问题导致解决方案
dt %.% group_by(a) %.% mutate(b = ifelse(is.na(b), mean(b, na.rm = T), b))
Run Code Online (Sandbox Code Playgroud)
与dplyr.我想用dplyr链来估算所有colums.没有单个列可以分组,而是我希望所有数字列都通过诸如列均值之类的方式替换所有NAs.
使用tidyverse/dp用列方法替换所有NA的最优雅方法是什么?