我有下表记录了每天的值。问题是有时几天不见了。我想编写一个 SQL 查询,它将:
所以从下面的源表:
Date Value
--------------------
2010/01/10 10
2010/01/11 15
2010/01/13 25
2010/01/16 40
Run Code Online (Sandbox Code Playgroud)
我要回:
Date Value
--------------------
2010/01/10 10
2010/01/11 15
2010/01/12 20
2010/01/13 25
2010/01/14 30
2010/01/15 35
2010/01/16 40
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激。
我正在研究C中的微控制器DDS项目,并且在确定如何计算线性插值以平滑输出值方面遇到了一些麻烦.现在的程序
使用24位累加器的前8位作为8位输出值数组的索引.我需要提出一个函数,它将占用累加器的中间和低位字节,并在数组中的"previous"和"next"值之间生成一个值.这对于快速硬件来说足够简单,但由于我使用的是微控制器,我真的需要避免做任何浮点运算或划分!
有了这些限制,我不确定如何从我的两个8位输入数字和累加器的低2个字节获得8位插值,这表示两个输入值之间的"距离".提前感谢任何建议!
澄清
DDS =直接数字合成
在DDS中,使用相位累加器从查找表生成波形.相位累加器通常包含整数分量和分数分量.整数组件用作查找表的索引.在简单的DDS实现中,忽略小数部分,但是对于更高质量的输出,小数分量用于在相邻查找表值之间进行内插(通常只是线性内插).对于上述问题,我们正在研究如何在给定分数f,其中的两个查找表值之间有效地执行此线性插值0 <= f < 1.
我有一个包含日期时间、纬度、经度、z 列的数据框。我正在从 csv 文件中读取数据,因此设置日期时间的时间段不起作用。时间以 6 小时为间隔,但我想将数据线性插入到每小时间隔。
从...来
'A' 'B' 'C' 'D'
0 2010-09-13 18:00:00 16.3 -78.5 1
1 2010-09-14 00:00:00 16.6 -79.8 6
2 2010-09-14 06:00:00 17.0 -81.1 12
Run Code Online (Sandbox Code Playgroud)
到
'A' 'B' 'C' 'D'
1 2010-09-13 18:00:00 16.3 -78.5 1
2 2010-09-13 19:00:00 16.35 -78.7 2
3 2010-09-13 20:00:00 16.4 -78.9 3
4 2010-09-13 21:00:00 16.45 -79.1 4
5 2010-09-13 22:00:00 16.5 -79.3 5
....
Run Code Online (Sandbox Code Playgroud)
我曾尝试使用 interpolate 命令,但没有关于数据帧新长度的参数。
df.interpolate(method='linear')
Run Code Online (Sandbox Code Playgroud)
我在想我可以使用 .loc 在数据帧的每行之间包含 5 行 NAN,然后使用插值函数,但这似乎是一个糟糕的解决方法。
解决方案 使用DatetimeIndex消除了与其他列的关联,如果您最初的列并没有被导入为日期时间。
i = pd.DatetimeIndex(start=df['A'].min(), …Run Code Online (Sandbox Code Playgroud) 百分位数的线性插值公式为:
线性:i + (j - i) * 分数,其中分数是被 i 和 j 包围的索引的小数部分。
假设我有这个包含 16 个观察值的列表:
test = [0, 1, 5, 5, 5, 6, 6, 7, 7, 8, 11, 12, 21, 23, 23, 24]
Run Code Online (Sandbox Code Playgroud)
我将它作为一个 numpy 数组传递并使用线性插值计算第 85 个百分位数。
np_test = np.asarray(test)
np.percentile(np_test, 85, interpolation = 'linear')
Run Code Online (Sandbox Code Playgroud)
我得到的结果是22.5。但是,我不认为这是正确的。第 85 个百分位的指数是 0.85 * 16 = 13.6。因此,小数部分是 0.6。第 13 个值是 21,所以 i = 21。第 14 个值是 23,所以 j = 23。然后线性公式应该产生:
21 + (23 - 21) * .6 = 21 + 2 …
我有一组数据,例如:
x<-c(1, 2, 3, 4, 5, 6)
y<-c(100, 110, 121, 133.1, NA, 161.051)
Run Code Online (Sandbox Code Playgroud)
现在,y显然以 10% 的恒定速度增长。
我希望能够在 处插入数据x=5,并且我想打印146.41作为答案。但是,这个函数似乎并没有这样做:
approx(x,y,5)
Run Code Online (Sandbox Code Playgroud)
这会打印147.0755,这不是我正在寻找的答案。
approx(x,y,5,method="constant")
Run Code Online (Sandbox Code Playgroud)
也不行。
我哪里错了?
我在大约120万次观测中运行了大约45,000个局部线性回归(基本上),所以我很感激一些帮助试图加快速度,因为我很不耐烦.
我基本上是在为一堆公司构建逐年工资合同 - 职能工资(给予公司,年份,职位的经验).
这是我正在使用的数据集(基本结构):
> wages
firm year position exp salary
1: 0007 1996 4 1 20029
2: 0007 1996 4 1 23502
3: 0007 1996 4 1 22105
4: 0007 1996 4 2 23124
5: 0007 1996 4 2 22700
---
1175141: 994 2012 5 2 47098
1175142: 994 2012 5 2 45488
1175143: 994 2012 5 2 47098
1175144: 994 2012 5 3 45488
1175145: 994 2012 5 3 47098
Run Code Online (Sandbox Code Playgroud)
我想为所有公司构建0到40经验水平的工资函数,a:
> salary_scales
firm year position exp …Run Code Online (Sandbox Code Playgroud) interpolation r linear-interpolation extrapolation data.table
使用R 3.2.2,我发现了一个运行简单线性插值的奇怪行为.第一个数据框给出了正确的结果:
test<-data.frame(dt=c(36996616, 36996620, 36996623, 36996626), value=c(1,2,3,4))
lm(value~dt, test)$coefficients
(Intercept) dt
-1.114966e+07 3.013699e-01
Run Code Online (Sandbox Code Playgroud)
通过递增dt变量,系数现在为NA:
test$dt<-test$dt+1
lm(value~dt, test)$coefficients
(Intercept) dt
2.5 NA
Run Code Online (Sandbox Code Playgroud)
知道为什么吗?似乎某处有溢出?
谢谢 !
我想在一系列输入值之间(例如,在 A 和 B 之间)进行一般性插值,并获得一系列输出值(例如,在 C 和 D 之间)。有时我想限制值(以便 B+10000 仍然输出 D),有时我不想。我该怎么做?
例如,输入速度在 20 mph 到 80 mph 之间,我想在 17 到 15 之间调整地图的缩放级别:
无夹紧
| \
| \
17 | \
| \
| \
| \
| \
15 | \
| \
+----------\-
20 80 \
Run Code Online (Sandbox Code Playgroud)
带夹紧
|
17 |----
| \
| \
| \
| \
15 | ----
|
+------------
20 80
Run Code Online (Sandbox Code Playgroud)
我找到了这个实用函数,但是(a)它本身不支持钳位,需要第二个函数调用,并且(b)它只支持 0 和 1 之间的输入。
我有一个在边界处包含NA的向量
x <- c(NA, -1, 1,-1, 1, NA, -1, 2, NA, NA)
Run Code Online (Sandbox Code Playgroud)
我希望结果是:
c(-3, -1, 1,-1, 1, 0, -1, 2, 5, 8)
Run Code Online (Sandbox Code Playgroud)
换句话说,我想用线性插值来填充内部和边界NA(也许我不能称其为“ inter- polation”,因为NA处于边界)。
我在“ zoo”包na.fill(x,“ extend”)中尝试了一个函数,但是边界输出不是我想要的东西,它只重复最左边或最右边的非NA值:
na.fill(x,"extend")
Run Code Online (Sandbox Code Playgroud)
输出是
[1] -1 -1 1 -1 1 0 -1 2 2 2
Run Code Online (Sandbox Code Playgroud)
我还检查了用于填充NA的其他函数,例如na.approx(),na.locf()等,但是它们都不起作用。
na.spline确实可以工作,但是边界NA的输出导致极大的变化。
na.spline(x)
Run Code Online (Sandbox Code Playgroud)
输出为:
[1] -15.9475983 -1.0000000 1.0000000 -1.0000000 1.0000000 0.3400655 -1.0000000 2.0000000
[9] 13.1441048 35.9323144
Run Code Online (Sandbox Code Playgroud)
边界点太大。谁能帮我吗?提前致谢!
我正在尝试制作一个在滚动时加速的无限选框,https://altsdigital.com/你可以在这个网站上看到效果,文字说“不是你通常的 SEO 机构”,当你滚动时它会加速。
这是我尝试过的,但它不起作用。它不会在没有重叠的情况下正确循环(请注意页面的左侧,您会注意到文本短暂重叠,然后向左平移以创建间隙),我不确定如何修复它:
这是代码(文本仅在“全页”视图上可见):
const lerp = (current, target, factor) => {
let holder = current * (1 - factor) + target * factor;
holder = parseFloat(holder).toFixed(3);
return holder;
};
class LoopingText {
constructor(DOMElements) {
this.DOMElements = DOMElements;
this.lerpingData = {
counterOne: { current: 0, target: 0 },
counterTwo: { current: 100, target: 100 },
};
this.interpolationFactor = 0.1;
this.speed = 0.2;
this.render();
this.onScroll();
}
onScroll() {
window.addEventListener("scroll", () => {
this.lerpingData["counterOne"].target += this.speed * 5;
this.lerpingData["counterTwo"].target …Run Code Online (Sandbox Code Playgroud)r ×4
javascript ×2
python ×2
algorithm ×1
animation ×1
avr ×1
c ×1
css ×1
data.table ×1
html ×1
lm ×1
missing-data ×1
na ×1
numpy ×1
pandas ×1
percentile ×1
t-sql ×1
zoo ×1