我如何计算不规则数据集的中位数?

问题描述 投票:0回答:1

在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)只能以length(output_x_values)从给定df中提取第一个nrow(df) > length(output_x_values)。这里出了什么问题,我该怎么解决? Atm看起来如图所示,我想添加一条中线。Fraction of precipitation by percentile.

r sequence median percentile
1个回答
0
投票

您尝试用于插值的近似函数具有默认的“ rule”参数,该参数不会对向量中观察到的范围之外的值进行插值,而该矢量将用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))
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.