【问题标题】:How can I calculate the median of irregular datasets?如何计算不规则数据集的中位数?
【发布时间】:2020-09-01 04:44:28
【问题描述】:

在 R 中,我在数据框中有一些数据,其中 x 值在 df$a 列中,y 在 df$b 列中。我想将它们内插到一系列生成的 x 值à la output_x_values <- seq(0.0, 100.0, 1.0)。现在approx(df$a, y = df$b, xout = output_x_values) 以某种方式仅从具有nrow(df) > length(output_x_values) 的给定df 中提取第一个length(output_x_values)。这里出了什么问题,我能做些什么来解决它? atm如图,我想加个中线Fraction of precipitation by percentile.

【问题讨论】:

    标签: r sequence median percentile


    【解决方案1】:

    您尝试用于插值的 approx 函数有一个默认的“规则”参数,该参数不会对向量中观察范围之外的值进行插值,该向量会用 NA 截断结果中的值。您可以将其更改为“rule = 2”,以允许插值超出预期范围:

    output_x_values <- seq(0.0, 100, 1.0)
    
    # Toy data
    set.seed(1)
    df <- data.frame(a = seq(50, 150, 10), b = seq(0, 100, 10) + rnorm(11, 20, 10))
    
    df
    
    # a         b
    # 1   50  13.73546
    # 2   60  31.83643
    # 3   70  31.64371
    # 4   80  65.95281
    # 5   90  63.29508
    # 6  100  61.79532
    # 7  110  84.87429
    # 8  120  97.38325
    # 9  130 105.75781
    # 10 140 106.94612
    # 11 150 135.11781
    
    approx(x = df$a, y = df$b, xout = output_x_values, rule = 2)
    

    但是,这对数据有一点奇怪的影响:

    plot(df)
    plot(approx(x = df$a, y = df$b, xout = output_x_values, rule = 2))
    

    你不妨试试:

    # Toy data scaled with centiles but without interpolation
    plot(percent_rank(df$a), percent_rank(df$b))
    
    # Toy data scaled with centiles with interpolation
    plot(approx(x = percent_rank(df$a), y = percent_rank(df$b), n = 100))
    

    【讨论】:

      猜你喜欢
      • 2021-09-16
      • 1970-01-01
      • 2013-09-24
      • 2014-08-30
      • 1970-01-01
      • 1970-01-01
      • 2018-12-23
      • 2014-02-08
      相关资源
      最近更新 更多