r - R 将数据线性插值到每 1 个单元中,其中 max(x) 是可变的并且不是整数
问题描述
我有以下两个数据集
'''
Percent <- c(0,30.4,99.6)
Value1 <- c(100,80.4,70)
Value2 <- c(0.04,0.06, 0.062)
DF1 <- data.frame(Percent,Value1,Value2)
Percent_A <- c(0,10,50.2,70,90.1,130.6,150,180.3)
Value1_A <- c(100,90,88,70,60,62,62,58)
Value2_A <- c(0.04,0.042,0.05,0.059,0.06,0.066,0.07,0.074)
DF2 <- data.frame(Percent_A, Value1_A, Value2_A)
'''
我想插入这些数据帧(实际上我有很多这些数据帧,所以如果我可以使用一种方法来处理所有数据帧,那将是理想的)。我对 R 中的插值有一些基本的了解,但遇到了几个问题。
我希望将这些数据帧插入到新的数据帧中,并为每个百分比值赋予 y 值。这导致我出现问题有两个原因(1:数据帧有两个不同的最大(百分比)值;2:最大(百分比)值通常不是整数)。基于我对 R 知识的有限插值, approxfun 函数似乎很有用,但我不确定如何插值到每 1 个百分比单位,其中最大已知百分比值不是整数。
如果我可以同时为给定的 DF 插入 Value1 和 Value2(相对于百分比),那就太好了。
我希望你对这件事有知识和洞察力!感谢您花时间和考虑这个话题。
预期的结果当然很长(如果您想了解更多细节,请告诉我):
预期结果:
'''
DF1$Percent <- c(0:100)
DF1$Value1 <- #interpolated values for percent= 1,2,3....99,100
DF1$Value2 <- #interpolated values for percent= 1,2,3....99,100
DF2$Percent_A <- c(0:180)
DF2$Value1_A <- #interpolated values for percent= 1,2,3....99,180
DF2$Value2_A <- #interpolated values for percent= 1,2,3....99,180
'''
注意:然后我将过滤 DF2,以便仅显示百分比 = 1-100 的插值(因为这就是我感兴趣的全部内容)。
解决方案
您只能在一个范围内进行插值,而不是超出范围,所以这是一种方法:
Pct1 <- with(DF1, ceiling(min(Percent)):floor(max(Percent)))
DF1.I1 <- with(DF1, approx(Percent, Value1, xout=Pct1))
DF1.I2 <- with(DF1, approx(Percent, Value2, xout=Pct1))
DF1.interp <- data.frame(Percent=Pct1, Value1=DF1.I1$y, Value2=DF1.I2$y)
最大 DF1$Percent 为 99.6,因此您无法内插到 100。
Pct2 <- with(DF2, ceiling(min(Percent_A)):floor(max(Percent_A)))
DF2.I1 <- with(DF2, approx(Percent_A, Value1_A, xout=Pct2))
DF2.I2 <- with(DF2, approx(Percent_A, Value2_A, xout=Pct2))
DF2.interp <- data.frame(Percent_A=Pct2, Value1_A=DF2.I1$y, Value2_A=DF2.I2$y)
现在绘制值 1:
dev.new(width=10, height=6)
par(mfrow=c(1, 2))
plot(Value1~Percent, DF1.interp, type="l")
plot(Value1_A~Percent_A, DF2.interp, type="l")
推荐阅读
- spring - 为什么 H2 不将 BLOB 存储为单独的文件?
- python - boto3 使用 lambda 获取 KMS 标签
- sass - 使用我所有的@use sass 文件,但它说我的变量是未定义的
- python - 熊猫系列索引作为数据框的列名
- firebase - Flutter:解决执行 updateData 时出错,NOT_FOUND:没有要更新的文档
- python - 没有用beautifulsoup 刮桌子
- angular - 角度分页器未加载第一页
- android - Flutter Application中获取图片流错误
- cryptography - 无法解析 EMV TAG 颁发者应用程序数据 9F10
- rust - 如何在 Rust 中从标准中获取多个输入?