R中的非对称观察的子集

时间:2010-06-04 00:49:51

标签: r

我有一个包含> 2M行的表格。我只对一个变量的百分位数与观测数量的百分位数(例如洛伦兹曲线)感兴趣。

  • 如何创建包含以下内容的较小数据框:观测编号1,101,201,301,...,最后,或与观察总数的1,2,3,...,100百分位?

  • 有一种快速的方法可以获得轴(百分比)的(索引,变量)洛伦兹曲线吗?现在我正在考虑为索引和变量的百分位数添加变量,然后将它们相互映射。

谢谢,

罗伯特

2 个答案:

答案 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来获得分位数/百分位数。