【问题标题】:subsetting nonconsecituve observations in RR中的子集非连续观察
【发布时间】:2010-06-04 00:49:50
【问题描述】:

我有一个超过 2M 行的表。我只对一个变量的百分位数与观察次数的百分位数(例如洛伦兹曲线)感兴趣。

  • 如何创建一个较小的数据框,其中包含例如观察编号 1,101,201,301,...,last 或对应于例如的观察观察总数的 1,2,3,...,100 个百分位数?

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

谢谢,

罗伯托

【问题讨论】:

标签: r


【解决方案1】:

至于第一个问题,我将使用quantile 函数,根据(比如说)第一列的总数的 1,2,3,...,100 个百分位数获取数据帧的子集观察结果(假设第 1 列中的整数值)

df[df[,1] %in% round(quantile(df[,1], probs = c(1:100)/100)),]

【讨论】:

  • 我同意这是 Roberto 要求的,但我不确定它是否是有用的子集,因为它可能具有与原始属性截然不同的属性。可能有几行匹配某些百分位数,而没有匹配其他百分位数。
  • George,我尝试了以下方法(我对行号的分位数感兴趣):df_small <- subset(df, row(df) %in% round(nrow(df)/100*(1:100),0)) 我得到:Error: (subscript) logical subscript too long 我不知道为什么会这样。想法? Richie:你的观察是对的,但我只想要一个包含 100 个数据点的汇总帕累托图,所以应该没问题。
  • @Roberto 我建议df_small <- df[round(nrow(df)/100*(1:100),0),]
【解决方案2】:

对于“大”数据集

dfr <- data.frame(x = 1:1000, y = runif(1000))

您可以使用规则间隔行的子集

dfr[!(seq_len(nrow(dfr)) %% 50),]

或随机子集

dfr[sample(nrow(dfr), 20),]

如 gd047 所述,使用quantile 获取分位数/百分位数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    • 2020-02-28
    • 2020-03-18
    • 1970-01-01
    • 2018-03-20
    相关资源
    最近更新 更多