我有一个包含> 2M行的表格。我只对一个变量的百分位数与观测数量的百分位数(例如洛伦兹曲线)感兴趣。
如何创建包含以下内容的较小数据框:观测编号1,101,201,301,...,最后,或与观察总数的1,2,3,...,100百分位?
有一种快速的方法可以获得轴(百分比)的(索引,变量)洛伦兹曲线吗?现在我正在考虑为索引和变量的百分位数添加变量,然后将它们相互映射。
谢谢,
罗伯特
答案 0 :(得分:1)
关于第一个问题,我会使用quantile
函数,根据(例如)总数的1,2,3,...,100百分位来获取数据帧的子集第一列的观察结果(假设第1列中的整数值)
df[df[,1] %in% round(quantile(df[,1], probs = c(1:100)/100)),]
答案 1 :(得分:1)
对于“大”数据集
dfr <- data.frame(x = 1:1000, y = runif(1000))
您可以使用
获取规则间隔行的子集dfr[!(seq_len(nrow(dfr)) %% 50),]
或随机
的子集dfr[sample(nrow(dfr), 20),]
正如gd047所提到的,使用quantile
来获得分位数/百分位数。