高效地计算dataframe列的百分比
此问题是所问和回答的StackOverflow问题的扩展 我的情况不同,我想计算50000(或更多!)个值的向量中每个值的百分比。比如说--高效地计算dataframe列的百分比,r,dataframe,quantile,ecdf,R,Dataframe,Quantile,Ecdf,此问题是所问和回答的StackOverflow问题的扩展 我的情况不同,我想计算50000(或更多!)个值的向量中每个值的百分比。比如说-- df您可以实现dplyr::percent_rank根据百分比对每个值进行排序 df.per <- df %>% mutate(val.percentile = percent_rank(val)) 我最初的答复是: t <- proc.time() df <- df %>% mutate(val.percent
df您可以实现dplyr::percent_rank
根据百分比对每个值进行排序
df.per <- df %>%
mutate(val.percentile = percent_rank(val))
我最初的答复是:
t <- proc.time()
df <- df %>%
mutate(val.percentile = percent_rank(val))
proc.time() - t
@第42条的答复:
t <- proc.time()
df$val.percentile.2 <- ecdf(df$val)(df$val)
proc.time() - t
因此,显然,ecdf
在给定的上下文中执行得更好。val.percentile
和val.percentile.2
的结果几乎相同。ecdf
已经矢量化,没有理由使用应用
功能。您只需运行:
df$val.percentile <- ecdf(df$val)(df$val)
df$val.percentile这个答案和我的有什么不同?@42-不是,但你和巴克几乎同时发布(巴克是第一个)嗯,我发布(或编辑)时没有看到它。我想是晚些时候。
user system elapsed
2.484 0.068 2.554
t <- proc.time()
df$val.percentile.2 <- ecdf(df$val)(df$val)
proc.time() - t
user system elapsed
1.048 0.004 1.048
df$val.percentile <- ecdf(df$val)(df$val)