【问题标题】:Produce new column in data frame by assigning values based on quantiles in R?通过基于 R 中的分位数分配值来在数据框中生成新列?
【发布时间】:2020-09-21 19:22:21
【问题描述】:

让我们创建一个名为INCOME <- rnorm(1:1000, 500, 100)的虚拟向量

然后让我们使用函数 'quantile' 获取分位数:INCOME_QUANTILES <- quantile(INCOME, probs=c(0.05, 0.50, 1.00))

现在我想创建一个名为 INCOME QUANTILE 的新向量并将其附加到我的向量 INCOME 以创建包含 1000 个观察值的 2 列(INCOME / INCOME QUANTILE)的数据框。在这个新向量中,值应为 1、2 或 3,具体取决于观测值属于哪个收入分位数,因此值为 1 = 0.05 分位数、2 = 0.50 分位数和 3 = 1.00 分位数。

例如,如果收入的第一个观测值落入 1.00 分位数,而第二个观测值落入 0.50 分位数,则如下所示:

INCOME   INCOME QUANTILE
550.50         3
415.20         2

朋友建议创建一个 for 循环,但老实说,我完全不知道该怎么做。任何帮助将不胜感激!

【问题讨论】:

    标签: r loops


    【解决方案1】:

    你可以试试这个:

    INCOME <- rnorm(1:1000, 500, 100)
    INCOME_QUANTILES <- quantile(INCOME, probs=c(0, 0.05, 0.50, 1.00))
    
    df <- data.frame(INCOME, 
                     INCOME_GOUP = as.numeric(cut(INCOME, breaks = INCOME_QUANTILES, include.lowest = TRUE)))
    
    

    请注意,我必须添加 0 作为最低分位数。所以它是 0-0.05 = 1,>.05-.5 = 2,>.5 = 3。

    【讨论】:

      猜你喜欢
      • 2014-11-25
      • 1970-01-01
      • 2021-07-05
      • 2020-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-19
      • 1970-01-01
      相关资源
      最近更新 更多